@refinitiv-ui/efx-grid 6.0.36 → 6.0.37

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.
@@ -13195,9 +13195,10 @@ DataTable._proto = DataTable.prototype;
13195
13195
  * @property {Array.<string>=} fields=null Field that corresponds to the given static values
13196
13196
  * @property {boolean=} asChain=false The given ric will be treated as a chain
13197
13197
  * @property {string=} chainRic="" RIC to be used for chain request (overiding ric property)
13198
- * @property {boolean=} collapsed=false Chain is expanded by default
13198
+ * @property {boolean=} collapsed=true Chain is collapsed by default
13199
13199
  * @property {(string|null)=} label=null
13200
13200
  * @property {boolean=} hidden=true When this row is hidden
13201
+ * @pro // realTime
13201
13202
  */
13202
13203
 
13203
13204
  /** @typedef {Object} RowDefinition~RowTypes
@@ -13273,18 +13274,18 @@ RowDefinition.prototype._ric = ""; // Contains no 0#
13273
13274
  * @private
13274
13275
  */
13275
13276
  RowDefinition.prototype._permId = "";
13276
- /** @type {string}
13277
- * @private
13278
- */
13279
- RowDefinition.prototype._displayText = "";
13280
13277
  /** @type {string|null}
13281
13278
  * @private
13282
13279
  */
13283
13280
  RowDefinition.prototype._label = null; // Label overrides _ric and _displayText
13281
+ /** @type {boolean|null}
13282
+ * @private
13283
+ */
13284
+ RowDefinition.prototype._isChain = null;
13284
13285
  /** @type {boolean}
13285
13286
  * @private
13286
13287
  */
13287
- RowDefinition.prototype._isChain = false;
13288
+ RowDefinition.prototype._realTime = true;
13288
13289
 
13289
13290
  /** @type {string}
13290
13291
  * @private
@@ -13308,10 +13309,10 @@ RowDefinition.prototype._view = null;
13308
13309
  */
13309
13310
  RowDefinition.prototype._subId = "";
13310
13311
 
13311
- /** @type {boolean}
13312
+ /** @type {boolean|null}
13312
13313
  * @private
13313
13314
  */
13314
- RowDefinition.prototype._expanded = false;
13315
+ RowDefinition.prototype._expanded = null;
13315
13316
  /** @type {boolean}
13316
13317
  * @private
13317
13318
  */
@@ -13399,18 +13400,19 @@ RowDefinition.prototype.initialize = function(rowOptions) {
13399
13400
  return;
13400
13401
  }
13401
13402
 
13402
- var val = rowOptions["ric"];
13403
+ var val = rowOptions["permId"];
13403
13404
  if(val != null) {
13404
- this._ric = val;
13405
+ this._permId = val;
13405
13406
  }
13406
- val = rowOptions["permId"];
13407
+ val = rowOptions["ric"];
13407
13408
  if(val != null) {
13408
- this._permId = val;
13409
+ this._ric = val;
13409
13410
  }
13410
- if(this._ric || this._permId){
13411
- this.setContent(this._ric, this._permId); // this._dataId is modified
13411
+ val = rowOptions["label"];
13412
+ // eslint-disable-next-line no-undefined
13413
+ if(val !== undefined) { // Empty string and null are allowed
13414
+ this._label = val;
13412
13415
  }
13413
-
13414
13416
  val = rowOptions["chainRic"];
13415
13417
  if(val != null) {
13416
13418
  this._chainRic = val;
@@ -13422,26 +13424,40 @@ RowDefinition.prototype.initialize = function(rowOptions) {
13422
13424
  }
13423
13425
 
13424
13426
  val = rowOptions["asChain"];
13425
- if(val) {
13426
- this._isChain = true;
13427
- this._expanded = !rowOptions["collapsed"];
13428
- } else if(this._isChain) {
13429
- var collapsed = rowOptions["collapsed"];
13430
- if(collapsed != null) {
13431
- this._expanded = !collapsed;
13432
- }
13427
+ if(val !== null) {
13428
+ this._isChain = val;
13433
13429
  }
13434
13430
 
13435
- val = rowOptions["label"];
13436
- // eslint-disable-next-line no-undefined
13437
- if(val !== undefined) { // Empty string and null are allowed
13438
- this._label = val;
13431
+ val = rowOptions["realTime"];
13432
+ if(val != null) {
13433
+ this._realTime = val;
13439
13434
  }
13440
13435
 
13436
+ val = rowOptions["collapsed"];
13437
+ if(val != null){
13438
+ this._expanded = !val;
13439
+ }
13441
13440
  val = rowOptions["keepModel"];
13442
13441
  if(val) {
13443
13442
  this._userModel = rowOptions;
13444
13443
  }
13444
+
13445
+ var expanded = this._expanded;
13446
+ var symbol = this._ric || this._chainRic;
13447
+ var asChain = rowOptions["asChain"] || !!this._chainRic;
13448
+ if(this._ric && this._ric.indexOf("0#") >= 0){
13449
+ asChain = true;
13450
+ expanded = true;
13451
+ }
13452
+ if(rowOptions["asChain"] === false){
13453
+ asChain = false;
13454
+ }
13455
+ if(rowOptions["collapsed"] === true){
13456
+ expanded = false;
13457
+ }
13458
+ if(symbol || this._permId){
13459
+ this.setContent(symbol, this._permId, asChain, expanded); // this._dataId is modified
13460
+ }
13445
13461
  };
13446
13462
  /** @private
13447
13463
  * @param {!Object} rowOptions
@@ -13451,7 +13467,6 @@ RowDefinition.prototype._initializeAsConstituent = function(rowOptions) {
13451
13467
  var parentDef = /** @type{RowDefinition} */(rowOptions["parent"]);
13452
13468
  if(this.setParent(parentDef)) {
13453
13469
  this._dataId = /** @type{string} */(rowOptions["dataId"]); // Constituent will have the same subId as its parent but with different ric
13454
- this._displayText = this._ric = /** @type{string} */(rowOptions["ric"]);
13455
13470
 
13456
13471
  this._dc = parentDef._dc; // Parent chain must have data cache
13457
13472
  if(this._dc) {
@@ -13470,9 +13485,12 @@ RowDefinition.prototype._initializeAsConstituent = function(rowOptions) {
13470
13485
  /** @public
13471
13486
  * @param {string} userInput RIC
13472
13487
  * @param {string=} permId=null Organization PermId, which use for getting ADC data for private company
13488
+ * @param {boolean=} asChain
13489
+ * @param {boolean=} expanded
13490
+ * @param {boolean=} realTime
13473
13491
  * @return {boolean} True if there is any change otherwise false
13474
13492
  */
13475
- RowDefinition.prototype.setContent = function(userInput, permId) {
13493
+ RowDefinition.prototype.setContent = function(userInput, permId, asChain, expanded) {
13476
13494
  if(this._autoGenerated) { // AutoGenerated RowDefinition cannot be changed by user input
13477
13495
  return false;
13478
13496
  }
@@ -13486,10 +13504,7 @@ RowDefinition.prototype.setContent = function(userInput, permId) {
13486
13504
  var dirty = (this._userInput !== userInput);
13487
13505
  if(this._permId !== permId){
13488
13506
  this._permId = permId || "";
13489
- if(!userInput){
13490
- this._displayText = this._permId;
13491
- dirty = true;
13492
- }
13507
+ dirty = true;
13493
13508
  }
13494
13509
  if(!dirty) {
13495
13510
  return false;
@@ -13498,34 +13513,44 @@ RowDefinition.prototype.setContent = function(userInput, permId) {
13498
13513
  this.unsubscribeForUpdates();
13499
13514
  this.resetUpdates(); // Remove all previous data updates because a new content is just entered
13500
13515
 
13516
+ // TODO: handle changing between chain and ric row
13501
13517
  this._userInput = userInput;
13502
13518
  if(this._userInput.charAt(0) === "'") { // This is a row header
13503
- this._displayText = this._userInput.substr(1);
13504
13519
  this._ric = this._chainRic = ""; // No ric for realtime request
13505
13520
  } else {
13506
13521
  if(this._userInput.indexOf("0#") >= 0) {
13507
- this._ric = this._userInput.replace("0#", "");
13508
- this._isChain = this._expanded = true; // Only chain can be expanded by 0# TODO: RIC with 0# is not necessarily a chain
13509
- this._chainRic = this._userInput;
13510
- if(this._view) {
13511
- this._view.setSegmentSeparator(this._rowId);
13512
- this.expandChain();
13522
+ if(asChain === false){
13523
+ this._ric = this._userInput;
13524
+ } else {
13525
+ this._ric = expanded ? this._userInput.replace("0#", "") : this._userInput;
13526
+ this._expanded = expanded;
13527
+ this._isChain = true; // Only chain can be expanded by 0#
13528
+ this._chainRic = this._userInput;
13529
+ if(this._view) {
13530
+ this._view.setSegmentSeparator(this._rowId);
13531
+ this.expandChain();
13532
+ }
13513
13533
  }
13514
13534
  } else {
13515
13535
  this._ric = this._userInput;
13516
- this._chainRic = "";
13536
+ if(asChain){
13537
+ this._isChain = true;
13538
+ }
13517
13539
  }
13518
- this._displayText = this._ric; // No 0#
13519
13540
  }
13520
13541
 
13521
13542
  this._dataId = this._rowId + this.getSymbol(); // JET/RTK will generate data id to be rowId (given from this rowDef) + ric;
13522
13543
 
13523
- // This will work for runtime ric modification, but not for first initilization.
13544
+
13524
13545
  if(!this.subscribeForUpdates()) {
13525
- // Avoid losing the ROW_DEF pointer.
13526
- var rowData = {};
13527
- rowData[ROW_DEF] = this; // Enable tracking back and updating data
13528
- this.setRowData(rowData);
13546
+ if(this._dc) {
13547
+ // This will work for runtime ric modification, but not for first initilization.
13548
+ // Avoid losing the ROW_DEF pointer.
13549
+ var rowData = {};
13550
+ rowData[ROW_DEF] = this; // Enable tracking back and updating data
13551
+ rowData["X_RIC_NAME"] = this.getDisplayText();
13552
+ this.setRowData(rowData);
13553
+ }
13529
13554
  }
13530
13555
  return true;
13531
13556
  };
@@ -13546,6 +13571,16 @@ RowDefinition.prototype.getConfigObject = function(rowOptions) {
13546
13571
  obj["ric"] = val;
13547
13572
  }
13548
13573
 
13574
+ // The user passed a single quote (') case
13575
+ if(!this._ric && this._userInput.charAt(0) === "'") {
13576
+ obj["ric"] = this._userInput;
13577
+ }
13578
+
13579
+ val = this._realTime;
13580
+ if(val !== true) {
13581
+ obj["realTime"] = val;
13582
+ }
13583
+
13549
13584
  val = this._permId;
13550
13585
  if(val) {
13551
13586
  obj["permId"] = val;
@@ -13567,12 +13602,12 @@ RowDefinition.prototype.getConfigObject = function(rowOptions) {
13567
13602
  }
13568
13603
 
13569
13604
  val = this._isChain;
13570
- if(val) {
13605
+ if(val != null) {
13571
13606
  obj["asChain"] = val;
13572
13607
  }
13573
13608
 
13574
13609
  val = this._expanded;
13575
- if(val) {
13610
+ if(val != null) {
13576
13611
  obj["collapsed"] = !val;
13577
13612
  }
13578
13613
 
@@ -13670,6 +13705,7 @@ RowDefinition.prototype.setDataSource = function(dataSource) {
13670
13705
  if(!rowData) {
13671
13706
  rowData = {};
13672
13707
  rowData[ROW_DEF] = this; // Enable tracking back and updating data
13708
+ rowData["X_RIC_NAME"] = this.getDisplayText();
13673
13709
  this.setRowData(rowData); // TODO: This will dispatch dataChanged event and caused update to be added, which should not happen
13674
13710
  }
13675
13711
 
@@ -13812,7 +13848,16 @@ RowDefinition.prototype.getDisplayText = function() {
13812
13848
  if(this._label != null) { // Empty string is allowed
13813
13849
  return this._label;
13814
13850
  }
13815
- return this._displayText;
13851
+
13852
+ if(this._ric) {
13853
+ return this._ric;
13854
+ }
13855
+
13856
+ if(this._permId) {
13857
+ return this._permId;
13858
+ }
13859
+
13860
+ return this._userInput;
13816
13861
  };
13817
13862
  /** @public
13818
13863
  * @return {string|null}
@@ -13876,13 +13921,18 @@ RowDefinition.prototype.isRealTimeRow = function() {
13876
13921
  if(!this.getRic()) { // Empty row
13877
13922
  return false;
13878
13923
  }
13879
- if(this.isRowHeader()) {
13924
+ if(!this._realTime) {
13880
13925
  return false;
13881
13926
  }
13927
+
13882
13928
  if(this._autoGenerated) { // Constituents in chain are not real-time row
13883
13929
  return false;
13884
13930
  }
13885
13931
 
13932
+ if(this.isRowHeader()) {
13933
+ return false;
13934
+ }
13935
+
13886
13936
  return true;
13887
13937
  };
13888
13938
 
@@ -13911,7 +13961,7 @@ RowDefinition.prototype.subscribeForUpdates = function() {
13911
13961
  if(prevRowData) {
13912
13962
  this._dc.setRowData(this._dataId, prevRowData); // TODO: We may need to create a new object instead of prevRowData for data correctness
13913
13963
  } else {
13914
- this._dc.setRowData(this._dataId, {"X_RIC_NAME": this.getSymbol(), "ROW_DEF": this}); // Trigger data update immediately
13964
+ this._dc.setRowData(this._dataId, {"X_RIC_NAME": this.getDisplayText(), "ROW_DEF": this}); // Trigger data update immediately
13915
13965
  }
13916
13966
  return true;
13917
13967
  };
@@ -14372,40 +14422,6 @@ var SYNAPSE_URL =
14372
14422
  + 'hits=1' // search only 1 result
14373
14423
  + '&profile=' + encodeURIComponent('Field Selector');
14374
14424
 
14375
- /** @function
14376
- * @private
14377
- * @param {Object} e
14378
- */
14379
- function xRicNameRenderer(e) {
14380
- e.cell.setContent(e.rowDef.getDisplayText());
14381
- }
14382
- /** @function
14383
- * @private
14384
- * @param {RowDefinition} rowA
14385
- * @param {RowDefinition} rowB
14386
- * @param {number} order
14387
- * @returns {number}
14388
- */
14389
- function xRicNameSorter(rowA, rowB, order) {
14390
- var A = rowA.getDisplayText();
14391
- var B = rowB.getDisplayText();
14392
- if(A === B) {
14393
- return 0;
14394
- }
14395
- if(!A) {
14396
- return 1;
14397
- }
14398
- if(!B) {
14399
- return -1;
14400
- }
14401
- if(A < B) {
14402
- return -order;
14403
- }
14404
-
14405
- return order;
14406
- }
14407
-
14408
-
14409
14425
  /* @namespace */
14410
14426
  var FieldDefinition = {};
14411
14427
 
@@ -14413,13 +14429,6 @@ var FieldDefinition = {};
14413
14429
  * @private
14414
14430
  */
14415
14431
  FieldDefinition._defs = {
14416
- "X_RIC_NAME": {
14417
- name: "RIC",
14418
- IsRealtimeField: false,
14419
- width: 100,
14420
- binding: xRicNameRenderer,
14421
- sortLogic: xRicNameSorter
14422
- },
14423
14432
  "CF_NAME": {
14424
14433
  name: "Name",
14425
14434
  rank: 2800003,
@@ -16814,6 +16823,13 @@ GroupDefinitions.prototype.getGroups = function () {
16814
16823
  }
16815
16824
  return groupDefs;
16816
16825
  };
16826
+ /** Get array of all existing group ids
16827
+ * @public
16828
+ * @return {!Array.<string>}
16829
+ */
16830
+ GroupDefinitions.prototype.getGroupIds = function () {
16831
+ return Object.keys(this._groupMap);
16832
+ };
16817
16833
  /** @public
16818
16834
  * @return {!Object.<string, Object>}
16819
16835
  */
@@ -16920,7 +16936,18 @@ GroupDefinitions.prototype.getParentId = function (childId, groupLevel) {
16920
16936
  return parentId || "";
16921
16937
  };
16922
16938
 
16923
-
16939
+ /** Remove all existing group definitions
16940
+ * @public
16941
+ * @return {boolean}
16942
+ */
16943
+ GroupDefinitions.prototype.removeAllGroups = function () {
16944
+ for(var groupId in this._groupMap) { // eslint-disable-line
16945
+ this._groupMap = {};
16946
+ this._childToParent = {};
16947
+ return true;
16948
+ }
16949
+ return false;
16950
+ };
16924
16951
  /** Remove all existing group definitions and replace them with the given definitions.
16925
16952
  * @public
16926
16953
  * @param {Array.<Object>=} groupDefs Use null or empty array to remove all existing groups
@@ -17065,9 +17092,10 @@ GroupDefinitions.prototype.hasGroupChild = function (parentId, childId) {
17065
17092
  /** @public
17066
17093
  * @param {string} parentId Group id
17067
17094
  * @param {string} childId
17095
+ * @param {number=} position
17068
17096
  * @return {boolean}
17069
17097
  */
17070
- GroupDefinitions.prototype.addGroupChild = function (parentId, childId) {
17098
+ GroupDefinitions.prototype.addGroupChild = function (parentId, childId, position) {
17071
17099
  var groupDef = this._groupMap[parentId];
17072
17100
 
17073
17101
  if(childId && groupDef) {
@@ -17080,7 +17108,11 @@ GroupDefinitions.prototype.addGroupChild = function (parentId, childId) {
17080
17108
  if(childDef) {
17081
17109
  childDef.parentId = parentId;
17082
17110
  }
17083
- chdr.push(childId);
17111
+ if(position != null && position >= 0) {
17112
+ chdr.splice(position, 0, childId);
17113
+ } else {
17114
+ chdr.push(childId);
17115
+ }
17084
17116
  return true;
17085
17117
  }
17086
17118
  }
@@ -17189,6 +17221,18 @@ GroupDefinitions.prototype.setGroupChildren = function (groupId, newChildList) {
17189
17221
  }
17190
17222
  return false;
17191
17223
  };
17224
+
17225
+ /** @public
17226
+ * @param {string} groupId
17227
+ * @return {string}
17228
+ */
17229
+ GroupDefinitions.prototype.getGroupName = function (groupId) {
17230
+ var groupDef = this._groupMap[groupId];
17231
+ if(groupDef) {
17232
+ return groupDef.name || "";
17233
+ }
17234
+ return "";
17235
+ };
17192
17236
  /** @public
17193
17237
  * @param {string} groupId
17194
17238
  * @param {string} groupName
@@ -17205,6 +17249,7 @@ GroupDefinitions.prototype.setGroupName = function (groupId, groupName) {
17205
17249
 
17206
17250
  return false;
17207
17251
  };
17252
+
17208
17253
  /* harmony default export */ var es6_GroupDefinitions = (GroupDefinitions);
17209
17254
 
17210
17255
 
@@ -20366,6 +20411,10 @@ ILayoutGrid.prototype.calculateColumnBounds = function (lftIdx, rgtIdx, outPosit
20366
20411
  * @param {number=} topPx Top position of bound
20367
20412
  */
20368
20413
  ILayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderAry, topPx) {};
20414
+ /** @public
20415
+ * @ignore
20416
+ */
20417
+ ILayoutGrid.prototype.updateColumnSeparators = function () {};
20369
20418
 
20370
20419
  /* harmony default export */ var grid_ILayoutGrid = (ILayoutGrid);
20371
20420
 
@@ -24355,7 +24404,14 @@ LayoutGrid.prototype._colSelDirty = false;
24355
24404
  * @private
24356
24405
  */
24357
24406
  LayoutGrid.prototype._hscrollbar = null;
24358
-
24407
+ /** @type {Element}
24408
+ * @private
24409
+ */
24410
+ LayoutGrid.prototype._leftColumnSeparator = null;
24411
+ /** @type {Element}
24412
+ * @private
24413
+ */
24414
+ LayoutGrid.prototype._rightColumnSeparator = null;
24359
24415
 
24360
24416
  /**
24361
24417
  * {@link ElementWrapper#dispose}
@@ -26322,8 +26378,7 @@ LayoutGrid.prototype.selectColumn = function (colIndex, selected) {
26322
26378
 
26323
26379
  var boundLayer = this._boundLayer;
26324
26380
  if(!boundLayer) {
26325
- boundLayer = this._boundLayer = document.createElement("div");
26326
- boundLayer.className = "cover-layer";
26381
+ this._initBoundLayer();
26327
26382
  this._updateLayers();
26328
26383
  }
26329
26384
  }
@@ -26495,6 +26550,92 @@ LayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderAry, topPx)
26495
26550
  }
26496
26551
  };
26497
26552
 
26553
+ /** @public
26554
+ */
26555
+ LayoutGrid.prototype.updateColumnSeparators = function () {
26556
+ var pinnedLeftCount = this._hscrollbar.getPinnedLeftColumnCount();
26557
+ var pinnedRightCount = this._hscrollbar.getPinnedRightColumnCount();
26558
+ if ((pinnedLeftCount || pinnedRightCount) && !this._boundLayer) {
26559
+ this._initBoundLayer();
26560
+ }
26561
+
26562
+ var isScrollbarActive = false;
26563
+ if(this._hscrollbar) {
26564
+ isScrollbarActive = this._hscrollbar.isActive();
26565
+ }
26566
+
26567
+ var boundLayer = this._boundLayer;
26568
+
26569
+ var colSeparator = this._leftColumnSeparator;
26570
+ if (isScrollbarActive && pinnedLeftCount) {
26571
+ if (!colSeparator) {
26572
+ colSeparator = this._leftColumnSeparator = this._createColumnSeparator();
26573
+ }
26574
+ if (!colSeparator.parentNode) {
26575
+ if (boundLayer.children.length) {
26576
+ boundLayer.insertBefore(colSeparator, boundLayer.children[0]);
26577
+ } else {
26578
+ boundLayer.appendChild(colSeparator);
26579
+ }
26580
+ }
26581
+
26582
+ var rightPos = this._trackX.getLaneStart(pinnedLeftCount);
26583
+ colSeparator.style.left = (rightPos - 1) + "px";
26584
+ colSeparator.style.height = this._trackY.getTrackSize() + "px";
26585
+ } else {
26586
+ if (colSeparator && colSeparator.parentNode) {
26587
+ this._boundLayer.removeChild(colSeparator);
26588
+ }
26589
+ }
26590
+
26591
+ colSeparator = this._rightColumnSeparator;
26592
+ if (isScrollbarActive && pinnedRightCount) {
26593
+ if (!colSeparator) {
26594
+ colSeparator = this._rightColumnSeparator = this._createColumnSeparator();
26595
+ }
26596
+
26597
+ if (!colSeparator.parentNode) {
26598
+ if (boundLayer.children.length) {
26599
+ boundLayer.insertBefore(colSeparator, boundLayer.children[0]);
26600
+ } else {
26601
+ boundLayer.appendChild(colSeparator);
26602
+ }
26603
+ }
26604
+ var colCount = this.getColumnCount();
26605
+ var colWidth = this._trackX.getLaneEnd(colCount - 1) - this._trackX.getLaneStart(colCount - pinnedRightCount);
26606
+ var viewSize = this._getViewSize();
26607
+
26608
+ colSeparator.style.left = (viewSize - colWidth - this._rightSpaceSize) + "px";
26609
+ colSeparator.style.height = this._trackY.getTrackSize() + "px";
26610
+ } else {
26611
+ if (colSeparator && colSeparator.parentNode) {
26612
+ this._boundLayer.removeChild(colSeparator);
26613
+ }
26614
+ }
26615
+ };
26616
+
26617
+ /** @private
26618
+ * @return {Element}
26619
+ */
26620
+ LayoutGrid.prototype._createColumnSeparator = function() {
26621
+ var colSeparator = document.createElement("div");
26622
+ colSeparator.classList.add("column-separator");
26623
+ return colSeparator;
26624
+ };
26625
+
26626
+ /** @private
26627
+ * @return {Element}
26628
+ */
26629
+ LayoutGrid.prototype._initBoundLayer = function () {
26630
+ var boundLayer = this._boundLayer;
26631
+ if(!boundLayer) {
26632
+ boundLayer = this._boundLayer = document.createElement("div");
26633
+ boundLayer.className = "cover-layer";
26634
+ this._element.appendChild(boundLayer);
26635
+ }
26636
+ return boundLayer;
26637
+ };
26638
+
26498
26639
  /**
26499
26640
  * @private
26500
26641
  * @param {number} indexX
@@ -35014,6 +35155,12 @@ VirtualizedLayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderA
35014
35155
  this._grid.updateColumnBounds(posAry, noBorderAry, topPx);
35015
35156
  this._updateRowBounds();
35016
35157
  };
35158
+ /** @public
35159
+ * @ignore
35160
+ */
35161
+ VirtualizedLayoutGrid.prototype.updateColumnSeparators = function () {
35162
+ this._grid.updateColumnSeparators();
35163
+ };
35017
35164
  /** @private
35018
35165
  */
35019
35166
  VirtualizedLayoutGrid.prototype._initBoundLayer = function () {
@@ -35779,7 +35926,7 @@ Core.prototype._batches = null;
35779
35926
  * @return {string}
35780
35927
  */
35781
35928
  Core.getVersion = function () {
35782
- return "5.1.49";
35929
+ return "5.1.50";
35783
35930
  };
35784
35931
  /** {@link ElementWrapper#dispose}
35785
35932
  * @override
@@ -36992,6 +37139,7 @@ Core.prototype._moveColumn = function (fromCol, destCol) {
36992
37139
  }
36993
37140
  }
36994
37141
  this._updateColumnBounds();
37142
+ this._updateColumnSeparators();
36995
37143
  return true;
36996
37144
  };
36997
37145
 
@@ -37322,6 +37470,7 @@ Core.prototype.setDefaultRowHeight = function (val, opt_includeTitle) {
37322
37470
  this._syncRowHeights();
37323
37471
  this._rowHeightSync = true;
37324
37472
  this.setRowScrollingStep(this._rowScrollingStep);
37473
+ this._updateColumnSeparators();
37325
37474
  }
37326
37475
  };
37327
37476
 
@@ -38156,6 +38305,7 @@ Core.prototype.freezeColumn = function (frozenColIndex, numRightColumn) {
38156
38305
 
38157
38306
  this._onColumnCountChanged(); // Activate horizontal scrollbar and column virtualization
38158
38307
  this._updateScrollbarWidth(true, true);
38308
+ this._updateColumnSeparators();
38159
38309
  };
38160
38310
 
38161
38311
  /** @private
@@ -39397,6 +39547,21 @@ Core.prototype._updateColumnBounds = function () {
39397
39547
  section.updateColumnBounds(posAry, noBorderAry);
39398
39548
  }
39399
39549
  };
39550
+ /* @private
39551
+ */
39552
+ Core.prototype._updateColumnSeparators = function() {
39553
+ var sectCount = this._settings.length;
39554
+ if(!sectCount) {
39555
+ return;
39556
+ }
39557
+
39558
+ for(var i = 0; i < sectCount; i++) {
39559
+ var section = this._settings[i].getSection();
39560
+ if (section) {
39561
+ section.updateColumnSeparators();
39562
+ }
39563
+ }
39564
+ };
39400
39565
 
39401
39566
  /** @public
39402
39567
  * @param {number} startColIndex INCLUSIVE
@@ -40466,6 +40631,8 @@ Core.prototype._onRowCountChanged = function (e) {
40466
40631
  if(!forceUpdate) {
40467
40632
  this._updateVScrollbar(); // Asynchronous
40468
40633
  }
40634
+
40635
+ this._updateColumnSeparators();
40469
40636
  if(prevRowCount < newRowCount) {
40470
40637
  this._dispatch("rowAdded", e);
40471
40638
  } else if(prevRowCount > newRowCount) {
@@ -40523,7 +40690,7 @@ Core.prototype._onRowHeightChanged = function (e) {
40523
40690
  minSectionIndex >= this._startVScrollbarIndex);
40524
40691
  }
40525
40692
  }
40526
-
40693
+ this._updateColumnSeparators();
40527
40694
  this._dispatchRowPositionChanged();
40528
40695
  };
40529
40696
  /** @private
@@ -40588,6 +40755,7 @@ Core.prototype._onColumnCountChanged = function () {
40588
40755
  var pinnedRight = this._countPinnedRightColumns();
40589
40756
 
40590
40757
  this._updateColumnBounds();
40758
+ this._updateColumnSeparators();
40591
40759
 
40592
40760
  if (this._hScrollbarEnabled && pinnedLeft + pinnedRight < this.getColumnCount()) {
40593
40761
  this._hscrollbar.enable();
@@ -40869,6 +41037,7 @@ Core.prototype._syncLayoutToColumns = function (from, to, opt_forceDispatching)
40869
41037
  var paneChanged = forceUpdate || (from < this.getHScrollStartIndex()) || (to > this.getFirstPinnedRightIndex());
40870
41038
  this._updateScrollbarWidth(paneChanged, true /* contentChanged */);
40871
41039
  this._updateColumnBounds();
41040
+ this._updateColumnSeparators();
40872
41041
  this._dispatchColumnPositionChanged();
40873
41042
 
40874
41043
  if (dirty || opt_forceDispatching) {
@@ -40964,6 +41133,7 @@ Core.prototype._updateLayout = function () {
40964
41133
  var section = this._settings[s].getSection();
40965
41134
  section.updateLayout(); // Notify section about forced recalculation of the layout
40966
41135
  }
41136
+ this._updateColumnSeparators();
40967
41137
  };
40968
41138
 
40969
41139
  /** @private */
@@ -49573,6 +49743,13 @@ MockSubscriptions.prototype._generateQuoteData = function(sub, fields) {
49573
49743
  values[field] = data.value;
49574
49744
  values[formattedField] = data.formattedValue;
49575
49745
  }
49746
+
49747
+ // The delay symbol for X_RIC_NAME will depend on the INDICATOR field.
49748
+ if(values["X_RIC_NAME"] != null && values["INDICATOR"] != null) {
49749
+ if(values["INDICATOR"] > 0) {
49750
+ values["X_RIC_NAME"] = "/" + values["X_RIC_NAME"];
49751
+ }
49752
+ }
49576
49753
  return values;
49577
49754
  };
49578
49755