@refinitiv-ui/efx-grid 6.0.32 → 6.0.33
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 +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
|