@refinitiv-ui/efx-grid 6.0.32 → 6.0.33
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/core/dist/core.js +86 -11
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/grid/Core.d.ts +4 -0
- package/lib/core/es6/grid/Core.js +27 -6
- package/lib/core/es6/grid/plugins/SortableTitlePlugin.d.ts +1 -0
- package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +29 -5
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +521 -179
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/Grid.js +14 -13
- package/lib/rt-grid/es6/RowDefinition.js +1 -1
- package/lib/tr-grid-column-grouping/es6/ColumnGrouping.d.ts +4 -0
- package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +58 -30
- package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +2 -0
- package/lib/tr-grid-column-stack/es6/ColumnStack.js +35 -12
- package/lib/tr-grid-util/es6/GroupDefinitions.d.ts +2 -0
- package/lib/tr-grid-util/es6/GroupDefinitions.js +15 -0
- package/lib/tr-grid-util/es6/Util.d.ts +3 -0
- package/lib/tr-grid-util/es6/Util.js +15 -0
- package/lib/tr-grid-util/es6/jet/CollectionDict.d.ts +1 -1
- package/lib/tr-grid-util/es6/jet/CollectionDict.js +12 -2
- package/lib/tr-grid-util/es6/jet/MockQuotes2.js +170 -47
- package/lib/types/es6/ColumnGrouping.d.ts +4 -0
- package/lib/types/es6/ColumnSelection.d.ts +2 -0
- package/lib/types/es6/ColumnStack.d.ts +2 -0
- package/lib/types/es6/Core/grid/util/SelectionList.d.ts +6 -2
- package/lib/types/es6/RowDragging.d.ts +23 -1
- package/lib/types/es6/StatisticsRow.d.ts +25 -25
- package/lib/versions.json +3 -3
- package/package.json +1 -1
@@ -13104,7 +13104,7 @@ var ROW_TYPES = {
|
|
13104
13104
|
*/
|
13105
13105
|
var RowDefinition = function(rowOptions) {
|
13106
13106
|
this._changes = {};
|
13107
|
-
if(rowOptions && rowOptions["segmentId"]) {
|
13107
|
+
if(rowOptions && rowOptions["segmentId"]) { // This row will be classification header row
|
13108
13108
|
this._dataId = this._rowId = rowOptions["segmentId"];
|
13109
13109
|
this._autoGenerated = true;
|
13110
13110
|
this._subSegment = true;
|
@@ -17028,7 +17028,22 @@ GroupDefinitions.prototype.setGroupChildren = function (groupId, newChildList) {
|
|
17028
17028
|
}
|
17029
17029
|
return false;
|
17030
17030
|
};
|
17031
|
+
/** @public
|
17032
|
+
* @param {string} groupId
|
17033
|
+
* @param {string} groupName
|
17034
|
+
* @return {boolean}
|
17035
|
+
*/
|
17036
|
+
GroupDefinitions.prototype.setGroupName = function (groupId, groupName) {
|
17037
|
+
var groupDef = this._groupMap[groupId];
|
17038
|
+
if(groupDef) {
|
17039
|
+
if(groupDef.name !== groupName) {
|
17040
|
+
groupDef.name = groupName;
|
17041
|
+
return true;
|
17042
|
+
}
|
17043
|
+
}
|
17031
17044
|
|
17045
|
+
return false;
|
17046
|
+
};
|
17032
17047
|
/* harmony default export */ var es6_GroupDefinitions = (GroupDefinitions);
|
17033
17048
|
|
17034
17049
|
|
@@ -20185,11 +20200,11 @@ ILayoutGrid.prototype.getHorizontalLayout = function () {};
|
|
20185
20200
|
ILayoutGrid.prototype.calculateColumnBounds = function (lftIdx, rgtIdx, outPositions, outNoBorders) {};
|
20186
20201
|
/** @public
|
20187
20202
|
* @ignore
|
20188
|
-
* @param {!Array.<
|
20189
|
-
* @param {!Array.<
|
20203
|
+
* @param {!Array.<Array>} posAry Left and right bound positions in pixel
|
20204
|
+
* @param {!Array.<Array>} noBorderAry Boolean values indicating existence of left and right CSS borders
|
20190
20205
|
* @param {number=} topPx Top position of bound
|
20191
20206
|
*/
|
20192
|
-
ILayoutGrid.prototype.updateColumnBounds = function (
|
20207
|
+
ILayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderAry, topPx) {};
|
20193
20208
|
|
20194
20209
|
/* harmony default export */ var grid_ILayoutGrid = (ILayoutGrid);
|
20195
20210
|
|
@@ -21755,6 +21770,34 @@ SelectionList.prototype.deselect = function (at) {
|
|
21755
21770
|
}
|
21756
21771
|
return false;
|
21757
21772
|
};
|
21773
|
+
/** Deselect all selections starting from the specified index
|
21774
|
+
* @public
|
21775
|
+
* @param {number} at
|
21776
|
+
* @return {boolean}
|
21777
|
+
*/
|
21778
|
+
SelectionList.prototype.deselectFrom = function (at) {
|
21779
|
+
if(this._lastIndex < at) {
|
21780
|
+
return false;
|
21781
|
+
}
|
21782
|
+
if(this._firstIndex >= at) {
|
21783
|
+
this.clearAllSelections();
|
21784
|
+
return true;
|
21785
|
+
}
|
21786
|
+
|
21787
|
+
var lastIndex = this._lastIndex;
|
21788
|
+
var sels = this._selections;
|
21789
|
+
for(var i = at; i <= lastIndex; ++i) {
|
21790
|
+
if (sels[i]) {
|
21791
|
+
sels[at] = false;
|
21792
|
+
--this._count;
|
21793
|
+
}
|
21794
|
+
}
|
21795
|
+
if (this._anchor >= at) {
|
21796
|
+
this._anchor = -1; // No anchor
|
21797
|
+
}
|
21798
|
+
this._lastIndex = this._findPrevSelection(at);
|
21799
|
+
return true;
|
21800
|
+
};
|
21758
21801
|
/** @public
|
21759
21802
|
* @param {number} at
|
21760
21803
|
*/
|
@@ -21951,14 +21994,16 @@ SelectionList.prototype.getLastSelectedIndex = function() {
|
|
21951
21994
|
|
21952
21995
|
/** WARNING: It will creates a new(EXPENSIVE) defragmented array of selected Index. The selected indices will always be sorted in ascending order
|
21953
21996
|
* @public
|
21954
|
-
* @return {Array.<number>}
|
21997
|
+
* @return {!Array.<number>}
|
21955
21998
|
*/
|
21956
21999
|
SelectionList.prototype.getAllSelections = function() {
|
21957
22000
|
if(this._count > 0) {
|
21958
22001
|
var ary = new Array(this._count); // Fastest way to create an array
|
21959
22002
|
var count = 0;
|
21960
|
-
|
21961
|
-
|
22003
|
+
var sels = this._selections;
|
22004
|
+
var lastIdx = this._lastIndex;
|
22005
|
+
for(var i = this._firstIndex; i <= lastIdx; ++i) {
|
22006
|
+
if(sels[i]) {
|
21962
22007
|
ary[count++] = i;
|
21963
22008
|
}
|
21964
22009
|
}
|
@@ -21966,6 +22011,45 @@ SelectionList.prototype.getAllSelections = function() {
|
|
21966
22011
|
}
|
21967
22012
|
return [];
|
21968
22013
|
};
|
22014
|
+
/** Get array of connected selection ranges. For intances, if indices 1, 2, 5, and 5 are selected, array of [1, 2] and [5, 5] are returned.
|
22015
|
+
* @public
|
22016
|
+
* @param {number=} from
|
22017
|
+
* @param {number=} to EXCLUSIVE
|
22018
|
+
* @return {!Array.<Array.<number>>}
|
22019
|
+
*/
|
22020
|
+
SelectionList.prototype.getConnectedRanges = function(from, to) {
|
22021
|
+
if(this._count > 0) {
|
22022
|
+
var ary = [];
|
22023
|
+
if(from == null || from < this._firstIndex) {
|
22024
|
+
from = this._firstIndex;
|
22025
|
+
}
|
22026
|
+
if(to == null || to > this._lastIndex) {
|
22027
|
+
to = this._lastIndex + 1;
|
22028
|
+
}
|
22029
|
+
|
22030
|
+
var pair = null;
|
22031
|
+
for(var i = from; i < to; ++i) {
|
22032
|
+
if(this._selections[i]) {
|
22033
|
+
if(!pair) {
|
22034
|
+
pair = [i, -1];
|
22035
|
+
}
|
22036
|
+
} else if(pair) {
|
22037
|
+
pair[1] = i - 1;
|
22038
|
+
ary.push(pair);
|
22039
|
+
pair = null;
|
22040
|
+
}
|
22041
|
+
}
|
22042
|
+
|
22043
|
+
if(pair) {
|
22044
|
+
pair[1] = this._lastIndex;
|
22045
|
+
ary.push(pair);
|
22046
|
+
pair = null;
|
22047
|
+
}
|
22048
|
+
return ary;
|
22049
|
+
}
|
22050
|
+
return [];
|
22051
|
+
};
|
22052
|
+
|
21969
22053
|
/**
|
21970
22054
|
* @public
|
21971
22055
|
* @return {Array.<boolean>}
|
@@ -21993,13 +22077,13 @@ SelectionList.prototype.clearAllSelections = function() {
|
|
21993
22077
|
* @public
|
21994
22078
|
* @param {SelectionList} srcSelections
|
21995
22079
|
* @param {number} fromSrcIndex
|
21996
|
-
* @param {number}
|
22080
|
+
* @param {number} offset Offset from the source index to map to destination index of this SelectionList. Use 0 if there is no shifting.
|
21997
22081
|
* @param {number} forLength Positive value only. negative valie is not allowed
|
21998
22082
|
*/
|
21999
|
-
SelectionList.prototype.copyFrom = function (srcSelections, fromSrcIndex,
|
22083
|
+
SelectionList.prototype.copyFrom = function (srcSelections, fromSrcIndex, offset, forLength) {
|
22000
22084
|
if (forLength <= 0) { return; }
|
22001
22085
|
|
22002
|
-
var toThisIndex = fromSrcIndex +
|
22086
|
+
var toThisIndex = fromSrcIndex + offset;
|
22003
22087
|
if (srcSelections == null) {
|
22004
22088
|
this.deselectRange(toThisIndex, forLength);
|
22005
22089
|
return;
|
@@ -22020,7 +22104,7 @@ SelectionList.prototype.copyFrom = function (srcSelections, fromSrcIndex, offset
|
|
22020
22104
|
this._anchor = -1;
|
22021
22105
|
if (srcSelections._anchor >= 0) {
|
22022
22106
|
if (srcSelections._anchor >= fromSrcIndex && srcSelections._anchor < (fromSrcIndex + forLength)) {
|
22023
|
-
this._anchor = srcSelections._anchor +
|
22107
|
+
this._anchor = srcSelections._anchor + offset;
|
22024
22108
|
}
|
22025
22109
|
}
|
22026
22110
|
};
|
@@ -22239,7 +22323,8 @@ var Scrollbar = function () {
|
|
22239
22323
|
t._element.appendChild(t._trackContent); // WARNING: trackContent is not registered as ElementWrapper's content
|
22240
22324
|
|
22241
22325
|
t.disableKeyboardInput(false); // Enable keyboard input by default
|
22242
|
-
|
22326
|
+
t._onThicknessChanged = t._dispatch.bind(t, "thicknessChanged");
|
22327
|
+
Scrollbar._queryNativeTrackThickness(t._onThicknessChanged);
|
22243
22328
|
|
22244
22329
|
if(!t._updateEffectiveArea()) {
|
22245
22330
|
t.listen("thicknessChanged", t._updateEffectiveArea);
|
@@ -22409,6 +22494,12 @@ Scrollbar.prototype._wheelScrolling = "";
|
|
22409
22494
|
* @ignore
|
22410
22495
|
*/
|
22411
22496
|
Scrollbar.prototype._mouseWheelLogic = null;
|
22497
|
+
/** @type {Function}
|
22498
|
+
* @private
|
22499
|
+
* @ignore
|
22500
|
+
*/
|
22501
|
+
Scrollbar.prototype._onThicknessChanged = null;
|
22502
|
+
|
22412
22503
|
|
22413
22504
|
/** @type {number}
|
22414
22505
|
* @private
|
@@ -22516,6 +22607,7 @@ Scrollbar._retrieveNativeTrackThinkness = function () {
|
|
22516
22607
|
outer.style.overflow = 'scroll';
|
22517
22608
|
var w2 = inner.offsetWidth;
|
22518
22609
|
|
22610
|
+
// Sometimes, w1 may be equal to w2 on certain browsers or devices, such as a Macbook when opened on the built-in screen. In such cases, the outer.style.overflow scroll may not change the offsetWidth, and the outer.clientWidth will be the same as the inner offsetWidth. As a result, the native track thickness may not be found
|
22519
22611
|
if(w1 == w2) {
|
22520
22612
|
w2 = outer.clientWidth;
|
22521
22613
|
}
|
@@ -22555,6 +22647,16 @@ Scrollbar.updateTrackThickness = function () {
|
|
22555
22647
|
|
22556
22648
|
/** @override */
|
22557
22649
|
Scrollbar.prototype.dispose = function () {
|
22650
|
+
|
22651
|
+
var sbListeners = Scrollbar._listeners;
|
22652
|
+
if(sbListeners) {
|
22653
|
+
var idx = sbListeners.indexOf(this._onThicknessChanged);
|
22654
|
+
if(idx >= 0 ) {
|
22655
|
+
sbListeners.splice(idx, 1);
|
22656
|
+
this._onThicknessChanged = null;
|
22657
|
+
}
|
22658
|
+
}
|
22659
|
+
|
22558
22660
|
this.unlistenAll();
|
22559
22661
|
if(this._smoothingId) {
|
22560
22662
|
clearInterval(this._smoothingId);
|
@@ -24076,10 +24178,18 @@ LayoutGrid.prototype._ctxRows;
|
|
24076
24178
|
* @private
|
24077
24179
|
*/
|
24078
24180
|
LayoutGrid.prototype._boundLayer = null;
|
24079
|
-
/** @type {Element}
|
24181
|
+
/** @type {Array.<Element>}
|
24182
|
+
* @private
|
24183
|
+
*/
|
24184
|
+
LayoutGrid.prototype._colBounds = null;
|
24185
|
+
/** @type {Array.<Element>}
|
24080
24186
|
* @private
|
24081
24187
|
*/
|
24082
|
-
LayoutGrid.prototype.
|
24188
|
+
LayoutGrid.prototype._colBoundCache = null;
|
24189
|
+
/** @type {boolean}
|
24190
|
+
* @private
|
24191
|
+
*/
|
24192
|
+
LayoutGrid.prototype._colSelDirty = false;
|
24083
24193
|
/** @type {HScrollbar}
|
24084
24194
|
* @private
|
24085
24195
|
*/
|
@@ -24103,6 +24213,8 @@ LayoutGrid.prototype.dispose = function () {
|
|
24103
24213
|
}
|
24104
24214
|
|
24105
24215
|
this._colCount = this._rowCount = this._activeRowEnd = this._availableRowCount = 0;
|
24216
|
+
this._colBounds = this._colBoundCache = null;
|
24217
|
+
this._colSelDirty = false;
|
24106
24218
|
|
24107
24219
|
this._highlightedCells.length = 0;
|
24108
24220
|
this._ctx = null;
|
@@ -26044,16 +26156,15 @@ LayoutGrid.prototype.getContextRow = function (rowIndex) {
|
|
26044
26156
|
LayoutGrid.prototype.selectColumn = function (colIndex, selected) {
|
26045
26157
|
this.enableColumnClass(colIndex, "selected-column", selected);
|
26046
26158
|
|
26047
|
-
|
26048
|
-
|
26049
|
-
|
26050
|
-
|
26051
|
-
|
26052
|
-
|
26053
|
-
|
26054
|
-
|
26055
|
-
|
26056
|
-
this._updateLayers();
|
26159
|
+
if(selected) {
|
26160
|
+
this._colSelDirty = true;
|
26161
|
+
|
26162
|
+
var boundLayer = this._boundLayer;
|
26163
|
+
if(!boundLayer) {
|
26164
|
+
boundLayer = this._boundLayer = document.createElement("div");
|
26165
|
+
boundLayer.className = "cover-layer";
|
26166
|
+
this._updateLayers();
|
26167
|
+
}
|
26057
26168
|
}
|
26058
26169
|
};
|
26059
26170
|
/** @public
|
@@ -26156,24 +26267,56 @@ LayoutGrid.prototype.calculateColumnBounds = function (lftIdx, rgtIdx, outPositi
|
|
26156
26267
|
};
|
26157
26268
|
/** @public
|
26158
26269
|
* @ignore
|
26159
|
-
* @param {!Array.<
|
26160
|
-
* @param {!Array.<
|
26270
|
+
* @param {!Array.<Array>} posAry Left and right bound positions in pixel
|
26271
|
+
* @param {!Array.<Array>} noBorderAry Boolean values indicating existence of left and right CSS borders
|
26161
26272
|
* @param {number=} topPx Top position of bound
|
26162
26273
|
*/
|
26163
|
-
LayoutGrid.prototype.updateColumnBounds = function (
|
26164
|
-
|
26165
|
-
if(!columnBound) {
|
26274
|
+
LayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderAry, topPx) {
|
26275
|
+
if(!this._colSelDirty) {
|
26166
26276
|
return;
|
26167
26277
|
}
|
26168
26278
|
|
26169
|
-
var
|
26170
|
-
var
|
26171
|
-
if(
|
26172
|
-
|
26279
|
+
var cbs = this._colBounds;
|
26280
|
+
var cbc = this._colBoundCache;
|
26281
|
+
if(!cbs) {
|
26282
|
+
cbs = this._colBounds = [];
|
26283
|
+
}
|
26284
|
+
if(!cbc) {
|
26285
|
+
cbc = this._colBoundCache = [];
|
26286
|
+
}
|
26287
|
+
|
26288
|
+
var rangeCount = posAry.length;
|
26289
|
+
var i;
|
26290
|
+
var pn = null; // parentNode
|
26291
|
+
var columnBound = null;
|
26292
|
+
|
26293
|
+
// Remove unused bounds from document
|
26294
|
+
var activeCount = cbs.length;
|
26295
|
+
for(i = rangeCount; i < activeCount; ++i) {
|
26296
|
+
columnBound = cbs[i];
|
26297
|
+
pn = columnBound.parentNode;
|
26173
26298
|
if(pn) {
|
26174
26299
|
pn.removeChild(columnBound);
|
26175
26300
|
}
|
26176
|
-
}
|
26301
|
+
}
|
26302
|
+
cbs.length = activeCount = rangeCount;
|
26303
|
+
|
26304
|
+
if(!rangeCount) {
|
26305
|
+
this._colSelDirty = false;
|
26306
|
+
return;
|
26307
|
+
}
|
26308
|
+
|
26309
|
+
for(i = 0; i < rangeCount; ++i) {
|
26310
|
+
var positions = posAry[i];
|
26311
|
+
var noBorders = noBorderAry[i];
|
26312
|
+
var lftPx = /** @type{number} */(positions[0]);
|
26313
|
+
var rgtPx = /** @type{number} */(positions[1]);
|
26314
|
+
|
26315
|
+
columnBound = cbc[i];
|
26316
|
+
if(!columnBound) {
|
26317
|
+
columnBound = cbc[i] = document.createElement("div");
|
26318
|
+
columnBound.className = "selection-bound column-bound";
|
26319
|
+
}
|
26177
26320
|
columnBound.style.left = lftPx + "px";
|
26178
26321
|
columnBound.style.width = (rgtPx - lftPx) + "px";
|
26179
26322
|
|
@@ -26183,7 +26326,10 @@ LayoutGrid.prototype.updateColumnBounds = function (positions, noBorders, topPx)
|
|
26183
26326
|
columnBound.classList.toggle("no-left-bound", noBorders[0]);
|
26184
26327
|
columnBound.classList.toggle("no-right-bound", noBorders[1]);
|
26185
26328
|
if(this._boundLayer) {
|
26186
|
-
|
26329
|
+
if(!cbs[i]) {
|
26330
|
+
cbs[i] = columnBound;
|
26331
|
+
this._boundLayer.appendChild(columnBound);
|
26332
|
+
}
|
26187
26333
|
}
|
26188
26334
|
}
|
26189
26335
|
};
|
@@ -33691,10 +33837,18 @@ VirtualizedLayoutGrid.prototype._selectionList = null;
|
|
33691
33837
|
* @private
|
33692
33838
|
*/
|
33693
33839
|
VirtualizedLayoutGrid.prototype._reverter = null;
|
33694
|
-
/** @type {Element}
|
33840
|
+
/** @type {Array.<Element>}
|
33841
|
+
* @private
|
33842
|
+
*/
|
33843
|
+
VirtualizedLayoutGrid.prototype._rowBounds = null;
|
33844
|
+
/** @type {Array.<Element>}
|
33845
|
+
* @private
|
33846
|
+
*/
|
33847
|
+
VirtualizedLayoutGrid.prototype._rowBoundCache = null;
|
33848
|
+
/** @type {boolean}
|
33695
33849
|
* @private
|
33696
33850
|
*/
|
33697
|
-
VirtualizedLayoutGrid.prototype.
|
33851
|
+
VirtualizedLayoutGrid.prototype._rowSelDirty = false;
|
33698
33852
|
/** @type {Element}
|
33699
33853
|
* @private
|
33700
33854
|
*/
|
@@ -33760,6 +33914,9 @@ VirtualizedLayoutGrid.prototype.dispose = function () {
|
|
33760
33914
|
this._grid.dispose();
|
33761
33915
|
this._dispose();
|
33762
33916
|
this._reverter.dispose();
|
33917
|
+
|
33918
|
+
this._rowBounds = this._rowBoundCache = null;
|
33919
|
+
this._rowSelDirty = false;
|
33763
33920
|
if(this._rowBoundTimer) {
|
33764
33921
|
clearTimeout(this._rowBoundTimer);
|
33765
33922
|
this._rowBoundTimer = 0;
|
@@ -34211,9 +34368,10 @@ VirtualizedLayoutGrid.prototype.setSelectedRow = function (rowIndex, opt_selecte
|
|
34211
34368
|
this._grid.setSelectedRow(rowIndex - this._firstIndex, selected);
|
34212
34369
|
|
34213
34370
|
if(selected) {
|
34214
|
-
this.
|
34371
|
+
this._rowSelDirty = true;
|
34372
|
+
this._initBoundLayer();
|
34215
34373
|
}
|
34216
|
-
this.
|
34374
|
+
this._requestUpdatingRowBounds();
|
34217
34375
|
};
|
34218
34376
|
|
34219
34377
|
/** @inheritDoc */
|
@@ -34226,14 +34384,15 @@ VirtualizedLayoutGrid.prototype.selectSingleRow = function (rowIndex) {
|
|
34226
34384
|
VirtualizedLayoutGrid.prototype.selectRowRange = function (rowIndex, length) {
|
34227
34385
|
this._selectionList.selectRange(rowIndex, length);
|
34228
34386
|
this._updateRowSelection();
|
34229
|
-
this.
|
34230
|
-
this.
|
34387
|
+
this._rowSelDirty = true;
|
34388
|
+
this._initBoundLayer();
|
34389
|
+
this._requestUpdatingRowBounds();
|
34231
34390
|
};
|
34232
34391
|
/** @inheritDoc */
|
34233
34392
|
VirtualizedLayoutGrid.prototype.clearSelectedRows = function () {
|
34234
34393
|
var count = this._selectionList.clearAllSelections();
|
34235
34394
|
this._grid.clearSelectedRows();
|
34236
|
-
this.
|
34395
|
+
this._requestUpdatingRowBounds(); // WARNING: Row bounds are not removed from the document immediately
|
34237
34396
|
return count;
|
34238
34397
|
};
|
34239
34398
|
/** @inheritDoc */
|
@@ -34675,12 +34834,12 @@ VirtualizedLayoutGrid.prototype._updateCellBounds = function () {
|
|
34675
34834
|
};
|
34676
34835
|
/** @public
|
34677
34836
|
* @ignore
|
34678
|
-
* @param {!Array.<
|
34679
|
-
* @param {!Array.<
|
34837
|
+
* @param {!Array.<Array>} posAry Left and right bound positions in pixel
|
34838
|
+
* @param {!Array.<Array>} noBorderAry Boolean values indicating existence of left and right CSS borders
|
34680
34839
|
* @param {number=} topPx Top position of bound
|
34681
34840
|
*/
|
34682
|
-
VirtualizedLayoutGrid.prototype.updateColumnBounds = function (
|
34683
|
-
this._grid.updateColumnBounds(
|
34841
|
+
VirtualizedLayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderAry, topPx) {
|
34842
|
+
this._grid.updateColumnBounds(posAry, noBorderAry, topPx);
|
34684
34843
|
this._updateRowBounds();
|
34685
34844
|
};
|
34686
34845
|
/** @private
|
@@ -34695,16 +34854,6 @@ VirtualizedLayoutGrid.prototype._initBoundLayer = function () {
|
|
34695
34854
|
};
|
34696
34855
|
/** @private
|
34697
34856
|
*/
|
34698
|
-
VirtualizedLayoutGrid.prototype._initRowBounds = function () {
|
34699
|
-
var rowBound = this._rowBound;
|
34700
|
-
if(!rowBound) {
|
34701
|
-
rowBound = this._rowBound = document.createElement("div");
|
34702
|
-
rowBound.className = "selection-bound";
|
34703
|
-
}
|
34704
|
-
this._initBoundLayer();
|
34705
|
-
};
|
34706
|
-
/** @private
|
34707
|
-
*/
|
34708
34857
|
VirtualizedLayoutGrid.prototype._requestUpdatingRowBounds = function () {
|
34709
34858
|
if(!this._rowBoundTimer) {
|
34710
34859
|
this._rowBoundTimer = setTimeout(this._updateRowBounds, 10);
|
@@ -34716,54 +34865,88 @@ VirtualizedLayoutGrid.prototype._updateRowBounds = function () {
|
|
34716
34865
|
this._rowBoundTimer = 0;
|
34717
34866
|
this._updateCellBounds();
|
34718
34867
|
|
34719
|
-
|
34720
|
-
if(!rowBound) {
|
34868
|
+
if(!this._rowSelDirty) {
|
34721
34869
|
return;
|
34722
34870
|
}
|
34723
|
-
var
|
34724
|
-
var
|
34725
|
-
|
34726
|
-
|
34727
|
-
var rowCount = this._layoutY.getLaneCount();
|
34728
|
-
if(topIdx >= rowCount) {
|
34729
|
-
topIdx = rowCount - 1;
|
34871
|
+
var rbs = this._rowBounds;
|
34872
|
+
var rbc = this._rowBoundCache;
|
34873
|
+
if(!rbs) {
|
34874
|
+
rbs = this._rowBounds = [];
|
34730
34875
|
}
|
34731
|
-
if(
|
34732
|
-
|
34733
|
-
if(btmIdx >= rowCount) {
|
34734
|
-
btmIdx = rowCount - 1;
|
34735
|
-
}
|
34736
|
-
topPx = this._layoutY.getLaneStart(topIdx);
|
34737
|
-
btmPx = this._layoutY.getLaneEnd(btmIdx);
|
34876
|
+
if(!rbc) {
|
34877
|
+
rbc = this._rowBoundCache = [];
|
34738
34878
|
}
|
34739
34879
|
|
34740
|
-
|
34741
|
-
|
34880
|
+
var selList = this._selectionList;
|
34881
|
+
var rowCount = this._layoutY.getLaneCount();
|
34882
|
+
selList.deselectFrom(rowCount); // TODO: move this to setRowCount
|
34883
|
+
|
34884
|
+
var selRanges = selList.getConnectedRanges();
|
34885
|
+
var rangeCount = selRanges.length;
|
34886
|
+
var i;
|
34887
|
+
var pn = null; // parentNode
|
34888
|
+
var rowBound = null;
|
34889
|
+
|
34890
|
+
// Remove unused bounds from document
|
34891
|
+
var activeCount = rbs.length;
|
34892
|
+
for(i = rangeCount; i < activeCount; ++i) {
|
34893
|
+
rowBound = rbs[i];
|
34894
|
+
pn = rowBound.parentNode;
|
34742
34895
|
if(pn) {
|
34743
34896
|
pn.removeChild(rowBound);
|
34744
34897
|
}
|
34745
|
-
}
|
34898
|
+
}
|
34899
|
+
rbs.length = activeCount = rangeCount;
|
34900
|
+
|
34901
|
+
if(!rangeCount) {
|
34902
|
+
var selCount = selList.getSelectionCount();
|
34903
|
+
if(!selCount) {
|
34904
|
+
this._rowSelDirty = false;
|
34905
|
+
}
|
34906
|
+
return;
|
34907
|
+
}
|
34908
|
+
|
34909
|
+
// Prepare shared parameters
|
34910
|
+
var scrollLeft = 0;
|
34911
|
+
var pinnedLftCount = 0;
|
34912
|
+
var pinnedRgtCount = 0;
|
34913
|
+
var endOfScroll = false;
|
34914
|
+
if(this._hscrollbar) {
|
34915
|
+
scrollLeft = this._hscrollbar.getScrollLeft();
|
34916
|
+
pinnedLftCount = this._hscrollbar.getPinnedLeftColumnCount();
|
34917
|
+
pinnedRgtCount = this._hscrollbar.getPinnedRightColumnCount();
|
34918
|
+
endOfScroll = this._hscrollbar.isEndOfHorizontalScroll();
|
34919
|
+
}
|
34920
|
+
var noLeftBound = !pinnedLftCount && scrollLeft > 0;
|
34921
|
+
var noRightBound = !pinnedRgtCount && !endOfScroll;
|
34922
|
+
var boundWidth = this._grid._getViewSize();
|
34923
|
+
|
34924
|
+
// Create row bound elements based on number of selection ranges
|
34925
|
+
for(i = 0; i < rangeCount; ++i) {
|
34926
|
+
var pair = selRanges[i];
|
34927
|
+
var topIdx = pair[0];
|
34928
|
+
var btmIdx = pair[1]; // Inclusive
|
34929
|
+
var topPx = this._layoutY.getLaneStart(topIdx);
|
34930
|
+
var btmPx = this._layoutY.getLaneEnd(btmIdx);
|
34931
|
+
|
34932
|
+
rowBound = rbc[i];
|
34933
|
+
if(!rowBound) {
|
34934
|
+
rowBound = rbc[i] = document.createElement("div");
|
34935
|
+
rowBound.className = "selection-bound";
|
34936
|
+
}
|
34937
|
+
|
34746
34938
|
rowBound.style.top = topPx + "px";
|
34747
34939
|
rowBound.style.height = (btmPx - topPx) + "px";
|
34748
|
-
|
34749
|
-
var boundWidth = this._grid._getViewSize();
|
34750
34940
|
rowBound.style.width = boundWidth + "px";
|
34751
34941
|
|
34752
|
-
|
34753
|
-
|
34754
|
-
var pinnedRgtCount = 0;
|
34755
|
-
var endOfScroll = false;
|
34756
|
-
if(this._hscrollbar) {
|
34757
|
-
scrollLeft = this._hscrollbar.getScrollLeft();
|
34758
|
-
pinnedLftCount = this._hscrollbar.getPinnedLeftColumnCount();
|
34759
|
-
pinnedRgtCount = this._hscrollbar.getPinnedRightColumnCount();
|
34760
|
-
endOfScroll = this._hscrollbar.isEndOfHorizontalScroll();
|
34761
|
-
}
|
34762
|
-
rowBound.classList.toggle("no-left-bound", !pinnedLftCount && scrollLeft > 0);
|
34763
|
-
rowBound.classList.toggle("no-right-bound", !pinnedRgtCount && !endOfScroll);
|
34942
|
+
rowBound.classList.toggle("no-left-bound", noLeftBound);
|
34943
|
+
rowBound.classList.toggle("no-right-bound", noRightBound);
|
34764
34944
|
|
34765
34945
|
if(this._boundLayer) {
|
34766
|
-
|
34946
|
+
if(!rbs[i]) {
|
34947
|
+
rbs[i] = rowBound;
|
34948
|
+
this._boundLayer.appendChild(rowBound);
|
34949
|
+
}
|
34767
34950
|
}
|
34768
34951
|
}
|
34769
34952
|
};
|
@@ -35408,7 +35591,7 @@ Core.prototype._groupDefs = null;
|
|
35408
35591
|
* @return {string}
|
35409
35592
|
*/
|
35410
35593
|
Core.getVersion = function () {
|
35411
|
-
return "5.1.
|
35594
|
+
return "5.1.41";
|
35412
35595
|
};
|
35413
35596
|
/** {@link ElementWrapper#dispose}
|
35414
35597
|
* @override
|
@@ -38934,47 +39117,72 @@ Core.prototype._updateColumnBounds = function () {
|
|
38934
39117
|
return;
|
38935
39118
|
}
|
38936
39119
|
|
39120
|
+
var sectCount = this._settings.length;
|
39121
|
+
if(!sectCount) {
|
39122
|
+
return;
|
39123
|
+
}
|
39124
|
+
|
39125
|
+
// Collecting column selection and selection ranges
|
39126
|
+
var selRanges = [];
|
39127
|
+
var pair = null;
|
38937
39128
|
var colCount = this.getColumnCount();
|
38938
|
-
var
|
39129
|
+
var selIndices = [];
|
38939
39130
|
var i;
|
38940
39131
|
for(i = 0; i < colCount; i++) {
|
38941
39132
|
if(this.isSelectedColumn(i)) {
|
38942
|
-
|
39133
|
+
selIndices.push(i);
|
39134
|
+
if(!pair) {
|
39135
|
+
pair = [i, -1];
|
39136
|
+
}
|
39137
|
+
} else if(pair) {
|
39138
|
+
pair[1] = i - 1;
|
39139
|
+
selRanges.push(pair);
|
39140
|
+
pair = null;
|
38943
39141
|
}
|
38944
39142
|
}
|
39143
|
+
if(pair) {
|
39144
|
+
pair[1] = colCount - 1;
|
39145
|
+
selRanges.push(pair);
|
39146
|
+
pair = null;
|
39147
|
+
}
|
39148
|
+
|
38945
39149
|
var arg = {
|
38946
|
-
selectedColumns:
|
39150
|
+
"selectedColumns": selIndices,
|
39151
|
+
"selectionRanges": selRanges
|
38947
39152
|
};
|
38948
39153
|
this._dispatch("beforeColumnBoundUpdate", arg);
|
38949
39154
|
|
38950
|
-
|
38951
|
-
var
|
38952
|
-
var
|
38953
|
-
|
38954
|
-
|
38955
|
-
|
38956
|
-
|
38957
|
-
|
38958
|
-
}
|
38959
|
-
}
|
38960
|
-
}
|
38961
|
-
var sectCount = this._settings.length;
|
38962
|
-
if(sectCount) {
|
38963
|
-
var sectionSetting = this._settings[0];
|
38964
|
-
var section = sectionSetting.getSection();
|
39155
|
+
// Calculate position from ranges
|
39156
|
+
var rangeCount = selRanges.length;
|
39157
|
+
var posAry = [];
|
39158
|
+
var noBorderAry = [];
|
39159
|
+
var topSectionSettings = this._settings[0];
|
39160
|
+
var section = topSectionSettings.getSection();
|
39161
|
+
for(i = 0; i < rangeCount; ++i) {
|
39162
|
+
pair = selRanges[i];
|
38965
39163
|
var positions = [0, 0];
|
38966
39164
|
var noBorders = [false, false];
|
38967
|
-
section.calculateColumnBounds(
|
38968
|
-
|
38969
|
-
|
38970
|
-
|
38971
|
-
}
|
38972
|
-
section.updateColumnBounds(positions, noBorders, topPx);
|
38973
|
-
for(i = 1; i < sectCount; i++) {
|
38974
|
-
section = this._settings[i].getSection();
|
38975
|
-
section.updateColumnBounds(positions, noBorders);
|
39165
|
+
section.calculateColumnBounds(pair[0], pair[1], positions, noBorders);
|
39166
|
+
if(positions[0] < positions[1]) {
|
39167
|
+
posAry.push(positions);
|
39168
|
+
noBorderAry.push(noBorders);
|
38976
39169
|
}
|
38977
39170
|
}
|
39171
|
+
|
39172
|
+
// Render column bounds
|
39173
|
+
var topPx = 0;
|
39174
|
+
var topBoundIdx = -1;
|
39175
|
+
if(arg["topBoundRowIndex"] != null) {
|
39176
|
+
topBoundIdx = +arg["topBoundRowIndex"];
|
39177
|
+
}
|
39178
|
+
if(topBoundIdx >= 0 && topSectionSettings.getType() === "title") {
|
39179
|
+
topPx = this._layoutY.getLaneStart(topBoundIdx);
|
39180
|
+
}
|
39181
|
+
section.updateColumnBounds(posAry, noBorderAry, topPx);
|
39182
|
+
for(i = 1; i < sectCount; i++) {
|
39183
|
+
section = this._settings[i].getSection();
|
39184
|
+
section.updateColumnBounds(posAry, noBorderAry);
|
39185
|
+
}
|
38978
39186
|
};
|
38979
39187
|
|
38980
39188
|
/** @public
|
@@ -45349,7 +45557,7 @@ Grid.prototype.removeRow = function(rowRef) {
|
|
45349
45557
|
if(this._mainGrid) {
|
45350
45558
|
return this._mainGrid.removeRow(this._getRowId(rowRef));
|
45351
45559
|
}
|
45352
|
-
var rowDef = this.
|
45560
|
+
var rowDef = this._getRowDefinitionByRef(rowRef);
|
45353
45561
|
if(rowDef) {
|
45354
45562
|
if(!rowDef.isAutoGenerated()) { // Users cannot remove auto-generated row by themselves
|
45355
45563
|
this._removeRow(rowDef);
|
@@ -45380,7 +45588,7 @@ Grid.prototype.removeRows = function(rowRefs) {
|
|
45380
45588
|
|
45381
45589
|
// Verify user input
|
45382
45590
|
for(i = 0; i < len; ++i) {
|
45383
|
-
rowDef = this.
|
45591
|
+
rowDef = this._getRowDefinitionByRef(rowRefs[i]);
|
45384
45592
|
if(rowDef) {
|
45385
45593
|
if(!rowDef.isAutoGenerated()) {
|
45386
45594
|
rowDefs.push(rowDef);
|
@@ -45516,7 +45724,7 @@ Grid.prototype.setRic = function(rowRef, str, options) {
|
|
45516
45724
|
this._mainGrid.setRic(this._toRowId(rowRef), str);
|
45517
45725
|
return;
|
45518
45726
|
}
|
45519
|
-
var rowDef = this.
|
45727
|
+
var rowDef = this._getRowDefinitionByRef(rowRef);
|
45520
45728
|
if(rowDef) {
|
45521
45729
|
options = options || {};
|
45522
45730
|
var newChain = false;
|
@@ -45551,7 +45759,7 @@ Grid.prototype.setRic = function(rowRef, str, options) {
|
|
45551
45759
|
* @param {Grid~RowReference} rowRef
|
45552
45760
|
*/
|
45553
45761
|
Grid.prototype.unlinkChain = function(rowRef) {
|
45554
|
-
var rowDef = this.
|
45762
|
+
var rowDef = this._getRowDefinitionByRef(rowRef);
|
45555
45763
|
if(!rowDef) {
|
45556
45764
|
return;
|
45557
45765
|
}
|
@@ -45730,7 +45938,8 @@ Grid.prototype.getRowType = function(rowRef) {
|
|
45730
45938
|
var rowDef = this.getRowDefinition(rowRef);
|
45731
45939
|
return rowDef ? rowDef.getType() : "";
|
45732
45940
|
};
|
45733
|
-
/**
|
45941
|
+
/** Get RowDefinition object by either number or row id
|
45942
|
+
* @public
|
45734
45943
|
* @param {number|string} rowRef Row index as shown in the view or row id (string)
|
45735
45944
|
* @return {RowDefinition}
|
45736
45945
|
*/
|
@@ -45760,7 +45969,7 @@ Grid.prototype._getRowDefinitionById = function(rowId) {
|
|
45760
45969
|
* @param {Grid~RowReference} rowRef
|
45761
45970
|
* @return {RowDefinition}
|
45762
45971
|
*/
|
45763
|
-
Grid.prototype.
|
45972
|
+
Grid.prototype._getRowDefinitionByRef = function(rowRef) {
|
45764
45973
|
if(rowRef instanceof RowDefinition) {
|
45765
45974
|
if(rowRef.getRowId()) { // The row may have been removed from the grid
|
45766
45975
|
return /** @type{!RowDefinition} */(rowRef);
|
@@ -45864,7 +46073,7 @@ Grid.prototype.setRicData = function(ric, values) {
|
|
45864
46073
|
* @param {Object} values {"FIELD1": value1, "FIELD2": value2, ...} Use null to remove current row data (not row in the view).
|
45865
46074
|
*/
|
45866
46075
|
Grid.prototype.setRowData = function(rowRef, values) {
|
45867
|
-
var rowDef = this.
|
46076
|
+
var rowDef = this._getRowDefinitionByRef(rowRef);
|
45868
46077
|
if(rowDef) {
|
45869
46078
|
rowDef.setRowData(values);
|
45870
46079
|
}
|
@@ -45876,7 +46085,7 @@ Grid.prototype.setRowData = function(rowRef, values) {
|
|
45876
46085
|
* @param {Object} values
|
45877
46086
|
*/
|
45878
46087
|
Grid.prototype.setStaticRowData = function(rowRef, values) {
|
45879
|
-
var rowDef = this.
|
46088
|
+
var rowDef = this._getRowDefinitionByRef(rowRef);
|
45880
46089
|
if(rowDef) {
|
45881
46090
|
rowDef.setStaticRowData(values);
|
45882
46091
|
}
|
@@ -45889,7 +46098,7 @@ Grid.prototype.setStaticRowData = function(rowRef, values) {
|
|
45889
46098
|
* @param {*} value
|
45890
46099
|
*/
|
45891
46100
|
Grid.prototype.setStaticData = function(rowRef, field, value) {
|
45892
|
-
var rowDef = this.
|
46101
|
+
var rowDef = this._getRowDefinitionByRef(rowRef);
|
45893
46102
|
if(rowDef) {
|
45894
46103
|
rowDef.setStaticData(field, value);
|
45895
46104
|
}
|
@@ -46239,7 +46448,7 @@ Grid.prototype._onDataChanged = function(e) {
|
|
46239
46448
|
// The new data update has no row definition, meaning that we have found a new constituent from a chain.
|
46240
46449
|
var subId = rowData[SUB_ID]; // The constituent will share the same sub id as its parent
|
46241
46450
|
if(subId) {
|
46242
|
-
var parentDef = this.
|
46451
|
+
var parentDef = this._getRowDefinitionById(subId);
|
46243
46452
|
if(parentDef && parentDef.getRic() !== rowData["RIC"]) { // TODO: Check for delayed ric
|
46244
46453
|
if(!this._chainMembers) {
|
46245
46454
|
this._chainMembers = {};
|
@@ -46271,7 +46480,7 @@ Grid.prototype._addMemberOfChain = function(rowData) {
|
|
46271
46480
|
for(i = 0; i < len; ++i) {
|
46272
46481
|
rowData = /** @type{!Object} */(rows[i]);
|
46273
46482
|
var subId = rowData[SUB_ID];
|
46274
|
-
var parentDef = this.
|
46483
|
+
var parentDef = this._getRowDefinitionById(subId);
|
46275
46484
|
if(parentDef) {
|
46276
46485
|
var childDef = parentDef.addConstituent(/** @type{string} */(rowData["RIC"]), this._dt);
|
46277
46486
|
if(childDef) {
|
@@ -46417,7 +46626,7 @@ Grid.prototype.getPageCount = function() {
|
|
46417
46626
|
* @param {Grid~RowReference} rowRef
|
46418
46627
|
*/
|
46419
46628
|
Grid.prototype.toggleChain = function(rowRef) {
|
46420
|
-
var rowDef = this.
|
46629
|
+
var rowDef = this._getRowDefinitionByRef(rowRef);
|
46421
46630
|
if(rowDef) {
|
46422
46631
|
rowDef.toggleChain();
|
46423
46632
|
}
|
@@ -46429,7 +46638,7 @@ Grid.prototype.toggleChain = function(rowRef) {
|
|
46429
46638
|
* @return {boolean}
|
46430
46639
|
*/
|
46431
46640
|
Grid.prototype.setClassification = function(rowRef, fields) {
|
46432
|
-
var rowDef = this.
|
46641
|
+
var rowDef = this._getRowDefinitionByRef(rowRef);
|
46433
46642
|
if(rowDef) {
|
46434
46643
|
return this._dt.setSegmentClassification(rowDef.getRowId(), fields);
|
46435
46644
|
}
|
@@ -48163,7 +48372,9 @@ MockSubscription.prototype._getUpdateData = function(ric) {
|
|
48163
48372
|
|
48164
48373
|
|
48165
48374
|
// CONCATENATED MODULE: ./node_modules/tr-grid-util/es6/jet/CollectionDict.js
|
48166
|
-
/** @
|
48375
|
+
/** @description CollectionDict stores a collection (Array) of any value using a text (string) as a key for accessing the collection.
|
48376
|
+
* @constructor
|
48377
|
+
*/
|
48167
48378
|
var CollectionDict = function() {
|
48168
48379
|
this._dict = {};
|
48169
48380
|
};
|
@@ -48290,9 +48501,17 @@ CollectionDict.prototype.getAllItems = function() {
|
|
48290
48501
|
return null;
|
48291
48502
|
};
|
48292
48503
|
/** @public
|
48504
|
+
* @param {string=} key
|
48293
48505
|
* @return {number}
|
48294
48506
|
*/
|
48295
|
-
CollectionDict.prototype.getItemCount = function() {
|
48507
|
+
CollectionDict.prototype.getItemCount = function(key) {
|
48508
|
+
if(key) {
|
48509
|
+
var items = this._dict[key] || null;
|
48510
|
+
if(items) {
|
48511
|
+
return items.length;
|
48512
|
+
}
|
48513
|
+
return 0;
|
48514
|
+
}
|
48296
48515
|
return this._count;
|
48297
48516
|
};
|
48298
48517
|
/** @public
|
@@ -48525,6 +48744,7 @@ MockSubscriptions.prototype.removeSubscription = function(subId) {
|
|
48525
48744
|
child["parent"] = null;
|
48526
48745
|
}
|
48527
48746
|
sub["children"] = null;
|
48747
|
+
sub["ricList"] = null;
|
48528
48748
|
}
|
48529
48749
|
};
|
48530
48750
|
/** @public
|
@@ -48591,9 +48811,9 @@ MockSubscriptions.prototype.start = function() {
|
|
48591
48811
|
/** @public */
|
48592
48812
|
MockSubscriptions.prototype.stop = function() {
|
48593
48813
|
this._working = false;
|
48594
|
-
if(this._timerId
|
48814
|
+
if(this._timerId) {
|
48595
48815
|
window.clearTimeout(this._timerId);
|
48596
|
-
this._timerId =
|
48816
|
+
this._timerId = 0;
|
48597
48817
|
}
|
48598
48818
|
};
|
48599
48819
|
|
@@ -48726,26 +48946,55 @@ MockSubscriptions.prototype._addSymbol = function(ric, asChain, subId) {
|
|
48726
48946
|
sub["ric"] = ric;
|
48727
48947
|
sub["chain"] = asChain;
|
48728
48948
|
sub["id"] = subId;
|
48729
|
-
sub["dataId"] = subId +
|
48949
|
+
sub["dataId"] = subId + ric;
|
48730
48950
|
this._subMap[subId] = sub; // Collect all user subscriptions
|
48731
|
-
this._dataMap.addItem(
|
48951
|
+
this._dataMap.addItem(ric, sub);
|
48952
|
+
var subs = this._dataMap.getItems(ric);
|
48953
|
+
var subCount = subs.length;
|
48954
|
+
|
48955
|
+
this._dispatch("subscriptionAdded", {"subs": [sub]});
|
48956
|
+
|
48957
|
+
var childSub = null;
|
48958
|
+
var childCount = 0;
|
48959
|
+
var i;
|
48732
48960
|
if(asChain) {
|
48733
|
-
|
48734
|
-
|
48735
|
-
|
48736
|
-
|
48737
|
-
|
48738
|
-
|
48739
|
-
|
48740
|
-
|
48741
|
-
|
48742
|
-
|
48961
|
+
// Note that constituents should have no subscription object. They should share the same subscription as their parent. Hence we does not register it to the _subMap
|
48962
|
+
if(subCount === 1) { // The first chain detected
|
48963
|
+
sub["children"] = [];
|
48964
|
+
childCount = MockSubscriptions.simpleDigest(ric) % 10 + 4;
|
48965
|
+
for(i = 0; i < childCount; ++i) {
|
48966
|
+
childSub = {};
|
48967
|
+
childSub["ric"] = "Child_" + String.fromCharCode(65 + i);
|
48968
|
+
childSub["id"] = subId; // Child shares the same sub id as its chain parent
|
48969
|
+
childSub["dataId"] = subId + childSub["ric"];
|
48970
|
+
childSub["parent"] = sub; // This does not exist in real subscription
|
48971
|
+
sub["children"].push(childSub);
|
48972
|
+
|
48973
|
+
this._dataMap.addItem(_joinSubKeys(sub, childSub), childSub);
|
48974
|
+
}
|
48975
|
+
} else {
|
48976
|
+
var firstSub = subs[0];
|
48977
|
+
var constituents = firstSub["children"];
|
48978
|
+
childCount = constituents.length;
|
48979
|
+
sub["children"] = new Array(childCount);
|
48980
|
+
|
48981
|
+
for(i = 0; i < childCount; ++i) {
|
48982
|
+
childSub = {};
|
48983
|
+
childSub["ric"] = constituents[i]["ric"];
|
48984
|
+
childSub["id"] = subId; // Child shares the same sub id as its chain parent
|
48985
|
+
childSub["dataId"] = subId + childSub["ric"];
|
48986
|
+
childSub["parent"] = sub; // This does not exist in real subscription
|
48987
|
+
sub["children"][i] = childSub;
|
48743
48988
|
|
48744
|
-
|
48989
|
+
this._dataMap.addItem(_joinSubKeys(sub, childSub), childSub);
|
48990
|
+
}
|
48991
|
+
}
|
48992
|
+
}
|
48993
|
+
if(subCount > 1) { // Duplicate RIC/CHAIN detected
|
48994
|
+
if(this._working) {
|
48995
|
+
setTimeout(this._updateDuplicateSymbol.bind(this, ric), 10);
|
48745
48996
|
}
|
48746
48997
|
}
|
48747
|
-
|
48748
|
-
this._dispatch("subscriptionAdded", {"subs": [sub]});
|
48749
48998
|
|
48750
48999
|
this._connect();
|
48751
49000
|
return subId;
|
@@ -48765,14 +49014,15 @@ MockSubscriptions.simpleDigest = function(str) {
|
|
48765
49014
|
|
48766
49015
|
/** @private */
|
48767
49016
|
MockSubscriptions.prototype._connect = function() {
|
48768
|
-
if(
|
48769
|
-
|
48770
|
-
|
49017
|
+
if(this._working && !this._timerId) {
|
49018
|
+
var delay = this._dataGen.randInt(this._minInterval, this._maxInterval);
|
49019
|
+
this._timerId = window.setTimeout(this._onSubscriptionResponse, delay);
|
49020
|
+
}
|
48771
49021
|
};
|
48772
49022
|
|
48773
49023
|
/** @private */
|
48774
49024
|
MockSubscriptions.prototype._onSubscriptionResponse = function() {
|
48775
|
-
this._timerId =
|
49025
|
+
this._timerId = 0;
|
48776
49026
|
|
48777
49027
|
var keys = this._dataMap.getAllKeys(); // list of all rics
|
48778
49028
|
var len = keys ? keys.length : 0;
|
@@ -48786,34 +49036,14 @@ MockSubscriptions.prototype._onSubscriptionResponse = function() {
|
|
48786
49036
|
var maxRow = (this._percentageDataUpdate + 0.02) * len;
|
48787
49037
|
maxRow = maxRow < len ? maxRow : len; // not more than all rows
|
48788
49038
|
var numRows = this._dataGen.randInt(minRow, maxRow);
|
49039
|
+
var fields = this._fields;
|
48789
49040
|
|
48790
49041
|
for(var i = 0; i < numRows; i++) {
|
48791
49042
|
var key = keys[this._dataGen.randIndex(len)]; // WARNING: Same sub could be picked more than once
|
48792
|
-
var subs = this._dataMap.getItems(key);
|
49043
|
+
var subs = this._dataMap.getItems(key); // Get all subs with the same RIC
|
48793
49044
|
|
48794
|
-
var sub = subs[0];
|
48795
|
-
var
|
48796
|
-
var prevData = sub.prevData;
|
48797
|
-
|
48798
|
-
var values = {};
|
48799
|
-
var options = {
|
48800
|
-
text: ric,
|
48801
|
-
prefix: sub["parent"] ? sub["parent"]["ric"] : ""
|
48802
|
-
};
|
48803
|
-
for(var field in this._fields){
|
48804
|
-
var data = this._dataGen.generateQuoteData(field, options);
|
48805
|
-
if(prevData) {
|
48806
|
-
if(data.changeOnly) {
|
48807
|
-
if(prevData[field] === data.value) {
|
48808
|
-
continue;
|
48809
|
-
}
|
48810
|
-
}
|
48811
|
-
prevData[field] = data.value;
|
48812
|
-
}
|
48813
|
-
|
48814
|
-
values[field] = data.value;
|
48815
|
-
values[field + "_FORMATTED"] = data.formattedValue;
|
48816
|
-
}
|
49045
|
+
var sub = subs[0]; // Only the first sub is need to generate data
|
49046
|
+
var values = this._generateQuoteData(sub, fields);
|
48817
49047
|
|
48818
49048
|
var jLen = subs.length;
|
48819
49049
|
for(var j = 0; j < jLen; ++j) {
|
@@ -48825,6 +49055,109 @@ MockSubscriptions.prototype._onSubscriptionResponse = function() {
|
|
48825
49055
|
};
|
48826
49056
|
/** @private
|
48827
49057
|
* @param {Object} sub
|
49058
|
+
* @param {Object} fields
|
49059
|
+
* @return {!Object}
|
49060
|
+
*/
|
49061
|
+
MockSubscriptions.prototype._generateQuoteData = function(sub, fields) {
|
49062
|
+
var ric = sub.ric;
|
49063
|
+
var prevData = sub.prevData;
|
49064
|
+
|
49065
|
+
var values = {};
|
49066
|
+
var options = {
|
49067
|
+
text: ric,
|
49068
|
+
prefix: sub["parent"] ? sub["parent"]["ric"] : "" // prefix for constituents
|
49069
|
+
};
|
49070
|
+
for(var field in fields){
|
49071
|
+
var data = this._dataGen.generateQuoteData(field, options);
|
49072
|
+
var formattedField = field + "_FORMATTED";
|
49073
|
+
if(prevData) {
|
49074
|
+
if(data.changeOnly) {
|
49075
|
+
if(prevData[field] === data.value) {
|
49076
|
+
continue;
|
49077
|
+
}
|
49078
|
+
}
|
49079
|
+
prevData[field] = data.value;
|
49080
|
+
prevData[formattedField] = data.formattedValue;
|
49081
|
+
}
|
49082
|
+
|
49083
|
+
values[field] = data.value;
|
49084
|
+
values[formattedField] = data.formattedValue;
|
49085
|
+
}
|
49086
|
+
return values;
|
49087
|
+
};
|
49088
|
+
|
49089
|
+
|
49090
|
+
/** @private
|
49091
|
+
* @param {Object} parentSub
|
49092
|
+
* @param {string} ric
|
49093
|
+
* @return {Object}
|
49094
|
+
*/
|
49095
|
+
MockSubscriptions.prototype._getChildSubByRic = function(parentSub, ric) {
|
49096
|
+
var children = parentSub["children"];
|
49097
|
+
if(children) {
|
49098
|
+
var childCount = children.length;
|
49099
|
+
for(var i = 0; i < childCount; ++i) {
|
49100
|
+
var child = children[i];
|
49101
|
+
if(child["ric"] === ric) {
|
49102
|
+
return child;
|
49103
|
+
}
|
49104
|
+
}
|
49105
|
+
}
|
49106
|
+
return null;
|
49107
|
+
};
|
49108
|
+
/** @private
|
49109
|
+
* @param {string} ric
|
49110
|
+
*/
|
49111
|
+
MockSubscriptions.prototype._updateDuplicateSymbol = function(ric) {
|
49112
|
+
var subs = this._dataMap.getItems(ric);
|
49113
|
+
if(!subs) {
|
49114
|
+
return;
|
49115
|
+
}
|
49116
|
+
var subCount = subs.length;
|
49117
|
+
if(subCount < 2) {
|
49118
|
+
return;
|
49119
|
+
}
|
49120
|
+
var firstSub = subs[0];
|
49121
|
+
var prevData = firstSub["prevData"];
|
49122
|
+
var isChain = firstSub["chain"] ? true : false;
|
49123
|
+
var i;
|
49124
|
+
if(prevData) {
|
49125
|
+
for(i = 1; i < subCount; ++i) {
|
49126
|
+
var sub = subs[i];
|
49127
|
+
if(!sub["prevData"]) {
|
49128
|
+
this._dispatchDataChanged(sub, prevData);
|
49129
|
+
}
|
49130
|
+
}
|
49131
|
+
}
|
49132
|
+
|
49133
|
+
|
49134
|
+
if(!isChain) {
|
49135
|
+
return;
|
49136
|
+
}
|
49137
|
+
var ricList = firstSub["ricList"];
|
49138
|
+
if(!ricList) {
|
49139
|
+
return;
|
49140
|
+
}
|
49141
|
+
var childCount = ricList.length;
|
49142
|
+
|
49143
|
+
for(i = 1; i < subCount; ++i) {
|
49144
|
+
var sub2 = subs[i];
|
49145
|
+
var ricList2 = sub2["ricList"];
|
49146
|
+
var childCount2 = ricList2 ? ricList2.length : 0;
|
49147
|
+
for(var j = childCount2; j < childCount; ++j) {
|
49148
|
+
var childRic = ricList[j];
|
49149
|
+
var childSub = this._getChildSubByRic(firstSub, childRic);
|
49150
|
+
var childSub2 = this._getChildSubByRic(sub2, childRic);
|
49151
|
+
if(childSub && childSub2) {
|
49152
|
+
if(childSub["prevData"]) {
|
49153
|
+
this._dispatchDataChanged(childSub2, childSub["prevData"]);
|
49154
|
+
}
|
49155
|
+
}
|
49156
|
+
}
|
49157
|
+
}
|
49158
|
+
};
|
49159
|
+
/** @private
|
49160
|
+
* @param {Object} sub
|
48828
49161
|
* @param {Object} dataUpdates
|
48829
49162
|
*/
|
48830
49163
|
MockSubscriptions.prototype._dispatchDataChanged = function(sub, dataUpdates) {
|
@@ -48844,6 +49177,15 @@ MockSubscriptions.prototype._dispatchDataChanged = function(sub, dataUpdates) {
|
|
48844
49177
|
values["STATUS_FORMATTED"] = this._statusMap["1"];
|
48845
49178
|
values["SUB_ID"] = sub["id"];
|
48846
49179
|
copyValues(values, prevData);
|
49180
|
+
|
49181
|
+
var parentSub = sub.parent;
|
49182
|
+
if(parentSub) { // This is the first time constituent have the data
|
49183
|
+
var ricList = parentSub["ricList"];
|
49184
|
+
if(!ricList) {
|
49185
|
+
ricList = parentSub["ricList"] = [];
|
49186
|
+
}
|
49187
|
+
parentSub["ricList"].push(sub["ric"]);
|
49188
|
+
}
|
48847
49189
|
}
|
48848
49190
|
this._dispatch("dataChanged", evtArg);
|
48849
49191
|
};
|
@@ -48901,7 +49243,7 @@ MockSubscriptions.prototype._working = false;
|
|
48901
49243
|
/** @type {number}
|
48902
49244
|
* @private
|
48903
49245
|
*/
|
48904
|
-
MockSubscriptions.prototype._timerId =
|
49246
|
+
MockSubscriptions.prototype._timerId = 0;
|
48905
49247
|
|
48906
49248
|
/** @type {number}
|
48907
49249
|
* @private
|