@refinitiv-ui/efx-grid 6.0.35 → 6.0.37

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. package/lib/core/dist/core.css +1 -1
  2. package/lib/core/dist/core.js +150 -6
  3. package/lib/core/dist/core.min.js +1 -1
  4. package/lib/core/es6/data/DataCache.js +20 -1
  5. package/lib/core/es6/grid/Core.js +25 -2
  6. package/lib/core/es6/grid/ILayoutGrid.js +4 -0
  7. package/lib/core/es6/grid/LayoutGrid.d.ts +4 -0
  8. package/lib/core/es6/grid/LayoutGrid.js +95 -3
  9. package/lib/core/es6/grid/VirtualizedLayoutGrid.js +6 -0
  10. package/lib/core/es6/tr-grid-theme.js +1 -1
  11. package/lib/grid/index.js +1 -1
  12. package/lib/grid/themes/base.less +1 -0
  13. package/lib/grid/themes/halo/dark/efx-grid.js +1 -1
  14. package/lib/grid/themes/halo/dark/es5/all-elements.js +1 -1
  15. package/lib/grid/themes/halo/efx-grid.less +2 -0
  16. package/lib/grid/themes/halo/light/efx-grid.js +1 -1
  17. package/lib/grid/themes/halo/light/es5/all-elements.js +1 -1
  18. package/lib/grid/themes/solar/charcoal/efx-grid.js +1 -1
  19. package/lib/grid/themes/solar/charcoal/es5/all-elements.js +1 -1
  20. package/lib/grid/themes/solar/pearl/efx-grid.js +1 -1
  21. package/lib/grid/themes/solar/pearl/es5/all-elements.js +1 -1
  22. package/lib/rt-grid/dist/rt-grid.js +302 -107
  23. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  24. package/lib/rt-grid/es6/FieldDefinition.js +0 -41
  25. package/lib/rt-grid/es6/Grid.js +4 -5
  26. package/lib/rt-grid/es6/RowDefinition.d.ts +2 -2
  27. package/lib/rt-grid/es6/RowDefinition.js +102 -52
  28. package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +1 -0
  29. package/lib/tr-grid-column-stack/es6/ColumnStack.js +579 -607
  30. package/lib/tr-grid-range-bar/es6/RangeBar.d.ts +4 -1
  31. package/lib/tr-grid-range-bar/es6/RangeBar.js +99 -39
  32. package/lib/tr-grid-util/es6/GroupDefinitions.d.ts +7 -1
  33. package/lib/tr-grid-util/es6/GroupDefinitions.js +39 -3
  34. package/lib/tr-grid-util/es6/jet/MockQuotes2.js +7 -0
  35. package/lib/types/es6/ColumnStack.d.ts +1 -0
  36. package/lib/types/es6/Core/grid/Core.d.ts +12 -0
  37. package/lib/types/es6/Core/grid/LayoutGrid.d.ts +4 -0
  38. package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +2 -2
  39. package/lib/versions.json +3 -3
  40. package/package.json +1 -1
@@ -9380,7 +9380,8 @@ DataCache_DataCache.prototype._insertRic = function (subId, ric, values) {
9380
9380
  // We cannot cache event arguments because user may want to collect all the updates
9381
9381
  this._onADCForNewRic(subId, ric);
9382
9382
 
9383
- if (!this.getRowData(rid)) { // Ensure that we have subscription id and ric from Quotes2
9383
+ var rowData = this.getRowData(rid);
9384
+ if (!rowData) { // Ensure that we have subscription id and ric from Quotes2
9384
9385
  var tmp = values;
9385
9386
 
9386
9387
  values = {}; // Clone a new object for duplicated ric
@@ -9391,6 +9392,11 @@ DataCache_DataCache.prototype._insertRic = function (subId, ric, values) {
9391
9392
 
9392
9393
  values["SUB_ID"] = subId;
9393
9394
  values["RIC"] = ric;
9395
+ } else {
9396
+ var rowDef = rowData["ROW_DEF"];
9397
+ if(rowDef && rowDef.isChain()){
9398
+ values["SUB_ID"] = subId;
9399
+ }
9394
9400
  }
9395
9401
 
9396
9402
  this.setRowData(rid, values);
@@ -9427,6 +9433,12 @@ DataCache_DataCache.prototype._onQ2SubAdded = function (e) {
9427
9433
  var sub = subs[i];
9428
9434
  var ric = sub["ric"];
9429
9435
 
9436
+ // chain subId fires twice, one with "_ci_" and one without "_ci_"
9437
+ // the subId with "_ci_" should be ignore
9438
+ if(sub["id"].indexOf("_ci_") >= 0){
9439
+ continue;
9440
+ }
9441
+
9430
9442
  this.addSubscription(sub, ric);
9431
9443
 
9432
9444
  if (duplicateSubIds) { // There will be no network request for duplicate subs, and hence we need to update the data from our cache
@@ -9451,6 +9463,13 @@ DataCache_DataCache.prototype._onQ2SubRemoved = function (e) {
9451
9463
 
9452
9464
  for (var i = 0; i < len; ++i) {
9453
9465
  var sub = subs[i];
9466
+
9467
+ // chain subId fires twice, one with "_ci_" and one without "_ci_"
9468
+ // the subId with "_ci_" should be ignore
9469
+ if(sub["id"].indexOf("_ci_") >= 0){
9470
+ continue;
9471
+ }
9472
+
9454
9473
  this.removeSubscription(sub);
9455
9474
  }
9456
9475
  };
@@ -13176,9 +13195,10 @@ DataTable._proto = DataTable.prototype;
13176
13195
  * @property {Array.<string>=} fields=null Field that corresponds to the given static values
13177
13196
  * @property {boolean=} asChain=false The given ric will be treated as a chain
13178
13197
  * @property {string=} chainRic="" RIC to be used for chain request (overiding ric property)
13179
- * @property {boolean=} collapsed=false Chain is expanded by default
13198
+ * @property {boolean=} collapsed=true Chain is collapsed by default
13180
13199
  * @property {(string|null)=} label=null
13181
13200
  * @property {boolean=} hidden=true When this row is hidden
13201
+ * @pro // realTime
13182
13202
  */
13183
13203
 
13184
13204
  /** @typedef {Object} RowDefinition~RowTypes
@@ -13254,18 +13274,18 @@ RowDefinition.prototype._ric = ""; // Contains no 0#
13254
13274
  * @private
13255
13275
  */
13256
13276
  RowDefinition.prototype._permId = "";
13257
- /** @type {string}
13258
- * @private
13259
- */
13260
- RowDefinition.prototype._displayText = "";
13261
13277
  /** @type {string|null}
13262
13278
  * @private
13263
13279
  */
13264
13280
  RowDefinition.prototype._label = null; // Label overrides _ric and _displayText
13281
+ /** @type {boolean|null}
13282
+ * @private
13283
+ */
13284
+ RowDefinition.prototype._isChain = null;
13265
13285
  /** @type {boolean}
13266
13286
  * @private
13267
13287
  */
13268
- RowDefinition.prototype._isChain = false;
13288
+ RowDefinition.prototype._realTime = true;
13269
13289
 
13270
13290
  /** @type {string}
13271
13291
  * @private
@@ -13289,10 +13309,10 @@ RowDefinition.prototype._view = null;
13289
13309
  */
13290
13310
  RowDefinition.prototype._subId = "";
13291
13311
 
13292
- /** @type {boolean}
13312
+ /** @type {boolean|null}
13293
13313
  * @private
13294
13314
  */
13295
- RowDefinition.prototype._expanded = false;
13315
+ RowDefinition.prototype._expanded = null;
13296
13316
  /** @type {boolean}
13297
13317
  * @private
13298
13318
  */
@@ -13380,18 +13400,19 @@ RowDefinition.prototype.initialize = function(rowOptions) {
13380
13400
  return;
13381
13401
  }
13382
13402
 
13383
- var val = rowOptions["ric"];
13403
+ var val = rowOptions["permId"];
13384
13404
  if(val != null) {
13385
- this._ric = val;
13405
+ this._permId = val;
13386
13406
  }
13387
- val = rowOptions["permId"];
13407
+ val = rowOptions["ric"];
13388
13408
  if(val != null) {
13389
- this._permId = val;
13409
+ this._ric = val;
13390
13410
  }
13391
- if(this._ric || this._permId){
13392
- 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;
13393
13415
  }
13394
-
13395
13416
  val = rowOptions["chainRic"];
13396
13417
  if(val != null) {
13397
13418
  this._chainRic = val;
@@ -13403,26 +13424,40 @@ RowDefinition.prototype.initialize = function(rowOptions) {
13403
13424
  }
13404
13425
 
13405
13426
  val = rowOptions["asChain"];
13406
- if(val) {
13407
- this._isChain = true;
13408
- this._expanded = !rowOptions["collapsed"];
13409
- } else if(this._isChain) {
13410
- var collapsed = rowOptions["collapsed"];
13411
- if(collapsed != null) {
13412
- this._expanded = !collapsed;
13413
- }
13427
+ if(val !== null) {
13428
+ this._isChain = val;
13414
13429
  }
13415
13430
 
13416
- val = rowOptions["label"];
13417
- // eslint-disable-next-line no-undefined
13418
- if(val !== undefined) { // Empty string and null are allowed
13419
- this._label = val;
13431
+ val = rowOptions["realTime"];
13432
+ if(val != null) {
13433
+ this._realTime = val;
13420
13434
  }
13421
13435
 
13436
+ val = rowOptions["collapsed"];
13437
+ if(val != null){
13438
+ this._expanded = !val;
13439
+ }
13422
13440
  val = rowOptions["keepModel"];
13423
13441
  if(val) {
13424
13442
  this._userModel = rowOptions;
13425
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
+ }
13426
13461
  };
13427
13462
  /** @private
13428
13463
  * @param {!Object} rowOptions
@@ -13432,7 +13467,6 @@ RowDefinition.prototype._initializeAsConstituent = function(rowOptions) {
13432
13467
  var parentDef = /** @type{RowDefinition} */(rowOptions["parent"]);
13433
13468
  if(this.setParent(parentDef)) {
13434
13469
  this._dataId = /** @type{string} */(rowOptions["dataId"]); // Constituent will have the same subId as its parent but with different ric
13435
- this._displayText = this._ric = /** @type{string} */(rowOptions["ric"]);
13436
13470
 
13437
13471
  this._dc = parentDef._dc; // Parent chain must have data cache
13438
13472
  if(this._dc) {
@@ -13451,9 +13485,12 @@ RowDefinition.prototype._initializeAsConstituent = function(rowOptions) {
13451
13485
  /** @public
13452
13486
  * @param {string} userInput RIC
13453
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
13454
13491
  * @return {boolean} True if there is any change otherwise false
13455
13492
  */
13456
- RowDefinition.prototype.setContent = function(userInput, permId) {
13493
+ RowDefinition.prototype.setContent = function(userInput, permId, asChain, expanded) {
13457
13494
  if(this._autoGenerated) { // AutoGenerated RowDefinition cannot be changed by user input
13458
13495
  return false;
13459
13496
  }
@@ -13467,10 +13504,7 @@ RowDefinition.prototype.setContent = function(userInput, permId) {
13467
13504
  var dirty = (this._userInput !== userInput);
13468
13505
  if(this._permId !== permId){
13469
13506
  this._permId = permId || "";
13470
- if(!userInput){
13471
- this._displayText = this._permId;
13472
- dirty = true;
13473
- }
13507
+ dirty = true;
13474
13508
  }
13475
13509
  if(!dirty) {
13476
13510
  return false;
@@ -13479,34 +13513,44 @@ RowDefinition.prototype.setContent = function(userInput, permId) {
13479
13513
  this.unsubscribeForUpdates();
13480
13514
  this.resetUpdates(); // Remove all previous data updates because a new content is just entered
13481
13515
 
13516
+ // TODO: handle changing between chain and ric row
13482
13517
  this._userInput = userInput;
13483
13518
  if(this._userInput.charAt(0) === "'") { // This is a row header
13484
- this._displayText = this._userInput.substr(1);
13485
13519
  this._ric = this._chainRic = ""; // No ric for realtime request
13486
13520
  } else {
13487
13521
  if(this._userInput.indexOf("0#") >= 0) {
13488
- this._ric = this._userInput.replace("0#", "");
13489
- this._isChain = this._expanded = true; // Only chain can be expanded by 0# TODO: RIC with 0# is not necessarily a chain
13490
- this._chainRic = this._userInput;
13491
- if(this._view) {
13492
- this._view.setSegmentSeparator(this._rowId);
13493
- 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
+ }
13494
13533
  }
13495
13534
  } else {
13496
13535
  this._ric = this._userInput;
13497
- this._chainRic = "";
13536
+ if(asChain){
13537
+ this._isChain = true;
13538
+ }
13498
13539
  }
13499
- this._displayText = this._ric; // No 0#
13500
13540
  }
13501
13541
 
13502
13542
  this._dataId = this._rowId + this.getSymbol(); // JET/RTK will generate data id to be rowId (given from this rowDef) + ric;
13503
13543
 
13504
- // This will work for runtime ric modification, but not for first initilization.
13544
+
13505
13545
  if(!this.subscribeForUpdates()) {
13506
- // Avoid losing the ROW_DEF pointer.
13507
- var rowData = {};
13508
- rowData[ROW_DEF] = this; // Enable tracking back and updating data
13509
- 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
+ }
13510
13554
  }
13511
13555
  return true;
13512
13556
  };
@@ -13527,6 +13571,16 @@ RowDefinition.prototype.getConfigObject = function(rowOptions) {
13527
13571
  obj["ric"] = val;
13528
13572
  }
13529
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
+
13530
13584
  val = this._permId;
13531
13585
  if(val) {
13532
13586
  obj["permId"] = val;
@@ -13548,12 +13602,12 @@ RowDefinition.prototype.getConfigObject = function(rowOptions) {
13548
13602
  }
13549
13603
 
13550
13604
  val = this._isChain;
13551
- if(val) {
13605
+ if(val != null) {
13552
13606
  obj["asChain"] = val;
13553
13607
  }
13554
13608
 
13555
13609
  val = this._expanded;
13556
- if(val) {
13610
+ if(val != null) {
13557
13611
  obj["collapsed"] = !val;
13558
13612
  }
13559
13613
 
@@ -13651,6 +13705,7 @@ RowDefinition.prototype.setDataSource = function(dataSource) {
13651
13705
  if(!rowData) {
13652
13706
  rowData = {};
13653
13707
  rowData[ROW_DEF] = this; // Enable tracking back and updating data
13708
+ rowData["X_RIC_NAME"] = this.getDisplayText();
13654
13709
  this.setRowData(rowData); // TODO: This will dispatch dataChanged event and caused update to be added, which should not happen
13655
13710
  }
13656
13711
 
@@ -13793,7 +13848,16 @@ RowDefinition.prototype.getDisplayText = function() {
13793
13848
  if(this._label != null) { // Empty string is allowed
13794
13849
  return this._label;
13795
13850
  }
13796
- 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;
13797
13861
  };
13798
13862
  /** @public
13799
13863
  * @return {string|null}
@@ -13857,13 +13921,18 @@ RowDefinition.prototype.isRealTimeRow = function() {
13857
13921
  if(!this.getRic()) { // Empty row
13858
13922
  return false;
13859
13923
  }
13860
- if(this.isRowHeader()) {
13924
+ if(!this._realTime) {
13861
13925
  return false;
13862
13926
  }
13927
+
13863
13928
  if(this._autoGenerated) { // Constituents in chain are not real-time row
13864
13929
  return false;
13865
13930
  }
13866
13931
 
13932
+ if(this.isRowHeader()) {
13933
+ return false;
13934
+ }
13935
+
13867
13936
  return true;
13868
13937
  };
13869
13938
 
@@ -13892,7 +13961,7 @@ RowDefinition.prototype.subscribeForUpdates = function() {
13892
13961
  if(prevRowData) {
13893
13962
  this._dc.setRowData(this._dataId, prevRowData); // TODO: We may need to create a new object instead of prevRowData for data correctness
13894
13963
  } else {
13895
- 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
13896
13965
  }
13897
13966
  return true;
13898
13967
  };
@@ -14353,40 +14422,6 @@ var SYNAPSE_URL =
14353
14422
  + 'hits=1' // search only 1 result
14354
14423
  + '&profile=' + encodeURIComponent('Field Selector');
14355
14424
 
14356
- /** @function
14357
- * @private
14358
- * @param {Object} e
14359
- */
14360
- function xRicNameRenderer(e) {
14361
- e.cell.setContent(e.rowDef.getDisplayText());
14362
- }
14363
- /** @function
14364
- * @private
14365
- * @param {RowDefinition} rowA
14366
- * @param {RowDefinition} rowB
14367
- * @param {number} order
14368
- * @returns {number}
14369
- */
14370
- function xRicNameSorter(rowA, rowB, order) {
14371
- var A = rowA.getDisplayText();
14372
- var B = rowB.getDisplayText();
14373
- if(A === B) {
14374
- return 0;
14375
- }
14376
- if(!A) {
14377
- return 1;
14378
- }
14379
- if(!B) {
14380
- return -1;
14381
- }
14382
- if(A < B) {
14383
- return -order;
14384
- }
14385
-
14386
- return order;
14387
- }
14388
-
14389
-
14390
14425
  /* @namespace */
14391
14426
  var FieldDefinition = {};
14392
14427
 
@@ -14394,13 +14429,6 @@ var FieldDefinition = {};
14394
14429
  * @private
14395
14430
  */
14396
14431
  FieldDefinition._defs = {
14397
- "X_RIC_NAME": {
14398
- name: "RIC",
14399
- IsRealtimeField: false,
14400
- width: 100,
14401
- binding: xRicNameRenderer,
14402
- sortLogic: xRicNameSorter
14403
- },
14404
14432
  "CF_NAME": {
14405
14433
  name: "Name",
14406
14434
  rank: 2800003,
@@ -16795,6 +16823,13 @@ GroupDefinitions.prototype.getGroups = function () {
16795
16823
  }
16796
16824
  return groupDefs;
16797
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
+ };
16798
16833
  /** @public
16799
16834
  * @return {!Object.<string, Object>}
16800
16835
  */
@@ -16901,7 +16936,18 @@ GroupDefinitions.prototype.getParentId = function (childId, groupLevel) {
16901
16936
  return parentId || "";
16902
16937
  };
16903
16938
 
16904
-
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
+ };
16905
16951
  /** Remove all existing group definitions and replace them with the given definitions.
16906
16952
  * @public
16907
16953
  * @param {Array.<Object>=} groupDefs Use null or empty array to remove all existing groups
@@ -17046,9 +17092,10 @@ GroupDefinitions.prototype.hasGroupChild = function (parentId, childId) {
17046
17092
  /** @public
17047
17093
  * @param {string} parentId Group id
17048
17094
  * @param {string} childId
17095
+ * @param {number=} position
17049
17096
  * @return {boolean}
17050
17097
  */
17051
- GroupDefinitions.prototype.addGroupChild = function (parentId, childId) {
17098
+ GroupDefinitions.prototype.addGroupChild = function (parentId, childId, position) {
17052
17099
  var groupDef = this._groupMap[parentId];
17053
17100
 
17054
17101
  if(childId && groupDef) {
@@ -17061,7 +17108,11 @@ GroupDefinitions.prototype.addGroupChild = function (parentId, childId) {
17061
17108
  if(childDef) {
17062
17109
  childDef.parentId = parentId;
17063
17110
  }
17064
- chdr.push(childId);
17111
+ if(position != null && position >= 0) {
17112
+ chdr.splice(position, 0, childId);
17113
+ } else {
17114
+ chdr.push(childId);
17115
+ }
17065
17116
  return true;
17066
17117
  }
17067
17118
  }
@@ -17170,6 +17221,18 @@ GroupDefinitions.prototype.setGroupChildren = function (groupId, newChildList) {
17170
17221
  }
17171
17222
  return false;
17172
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
+ };
17173
17236
  /** @public
17174
17237
  * @param {string} groupId
17175
17238
  * @param {string} groupName
@@ -17186,6 +17249,7 @@ GroupDefinitions.prototype.setGroupName = function (groupId, groupName) {
17186
17249
 
17187
17250
  return false;
17188
17251
  };
17252
+
17189
17253
  /* harmony default export */ var es6_GroupDefinitions = (GroupDefinitions);
17190
17254
 
17191
17255
 
@@ -20347,6 +20411,10 @@ ILayoutGrid.prototype.calculateColumnBounds = function (lftIdx, rgtIdx, outPosit
20347
20411
  * @param {number=} topPx Top position of bound
20348
20412
  */
20349
20413
  ILayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderAry, topPx) {};
20414
+ /** @public
20415
+ * @ignore
20416
+ */
20417
+ ILayoutGrid.prototype.updateColumnSeparators = function () {};
20350
20418
 
20351
20419
  /* harmony default export */ var grid_ILayoutGrid = (ILayoutGrid);
20352
20420
 
@@ -24336,7 +24404,14 @@ LayoutGrid.prototype._colSelDirty = false;
24336
24404
  * @private
24337
24405
  */
24338
24406
  LayoutGrid.prototype._hscrollbar = null;
24339
-
24407
+ /** @type {Element}
24408
+ * @private
24409
+ */
24410
+ LayoutGrid.prototype._leftColumnSeparator = null;
24411
+ /** @type {Element}
24412
+ * @private
24413
+ */
24414
+ LayoutGrid.prototype._rightColumnSeparator = null;
24340
24415
 
24341
24416
  /**
24342
24417
  * {@link ElementWrapper#dispose}
@@ -26303,8 +26378,7 @@ LayoutGrid.prototype.selectColumn = function (colIndex, selected) {
26303
26378
 
26304
26379
  var boundLayer = this._boundLayer;
26305
26380
  if(!boundLayer) {
26306
- boundLayer = this._boundLayer = document.createElement("div");
26307
- boundLayer.className = "cover-layer";
26381
+ this._initBoundLayer();
26308
26382
  this._updateLayers();
26309
26383
  }
26310
26384
  }
@@ -26476,6 +26550,92 @@ LayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderAry, topPx)
26476
26550
  }
26477
26551
  };
26478
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
+
26479
26639
  /**
26480
26640
  * @private
26481
26641
  * @param {number} indexX
@@ -34995,6 +35155,12 @@ VirtualizedLayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderA
34995
35155
  this._grid.updateColumnBounds(posAry, noBorderAry, topPx);
34996
35156
  this._updateRowBounds();
34997
35157
  };
35158
+ /** @public
35159
+ * @ignore
35160
+ */
35161
+ VirtualizedLayoutGrid.prototype.updateColumnSeparators = function () {
35162
+ this._grid.updateColumnSeparators();
35163
+ };
34998
35164
  /** @private
34999
35165
  */
35000
35166
  VirtualizedLayoutGrid.prototype._initBoundLayer = function () {
@@ -35760,7 +35926,7 @@ Core.prototype._batches = null;
35760
35926
  * @return {string}
35761
35927
  */
35762
35928
  Core.getVersion = function () {
35763
- return "5.1.48";
35929
+ return "5.1.50";
35764
35930
  };
35765
35931
  /** {@link ElementWrapper#dispose}
35766
35932
  * @override
@@ -36973,6 +37139,7 @@ Core.prototype._moveColumn = function (fromCol, destCol) {
36973
37139
  }
36974
37140
  }
36975
37141
  this._updateColumnBounds();
37142
+ this._updateColumnSeparators();
36976
37143
  return true;
36977
37144
  };
36978
37145
 
@@ -37303,6 +37470,7 @@ Core.prototype.setDefaultRowHeight = function (val, opt_includeTitle) {
37303
37470
  this._syncRowHeights();
37304
37471
  this._rowHeightSync = true;
37305
37472
  this.setRowScrollingStep(this._rowScrollingStep);
37473
+ this._updateColumnSeparators();
37306
37474
  }
37307
37475
  };
37308
37476
 
@@ -38137,6 +38305,7 @@ Core.prototype.freezeColumn = function (frozenColIndex, numRightColumn) {
38137
38305
 
38138
38306
  this._onColumnCountChanged(); // Activate horizontal scrollbar and column virtualization
38139
38307
  this._updateScrollbarWidth(true, true);
38308
+ this._updateColumnSeparators();
38140
38309
  };
38141
38310
 
38142
38311
  /** @private
@@ -39378,6 +39547,21 @@ Core.prototype._updateColumnBounds = function () {
39378
39547
  section.updateColumnBounds(posAry, noBorderAry);
39379
39548
  }
39380
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
+ };
39381
39565
 
39382
39566
  /** @public
39383
39567
  * @param {number} startColIndex INCLUSIVE
@@ -40447,6 +40631,8 @@ Core.prototype._onRowCountChanged = function (e) {
40447
40631
  if(!forceUpdate) {
40448
40632
  this._updateVScrollbar(); // Asynchronous
40449
40633
  }
40634
+
40635
+ this._updateColumnSeparators();
40450
40636
  if(prevRowCount < newRowCount) {
40451
40637
  this._dispatch("rowAdded", e);
40452
40638
  } else if(prevRowCount > newRowCount) {
@@ -40504,7 +40690,7 @@ Core.prototype._onRowHeightChanged = function (e) {
40504
40690
  minSectionIndex >= this._startVScrollbarIndex);
40505
40691
  }
40506
40692
  }
40507
-
40693
+ this._updateColumnSeparators();
40508
40694
  this._dispatchRowPositionChanged();
40509
40695
  };
40510
40696
  /** @private
@@ -40569,6 +40755,7 @@ Core.prototype._onColumnCountChanged = function () {
40569
40755
  var pinnedRight = this._countPinnedRightColumns();
40570
40756
 
40571
40757
  this._updateColumnBounds();
40758
+ this._updateColumnSeparators();
40572
40759
 
40573
40760
  if (this._hScrollbarEnabled && pinnedLeft + pinnedRight < this.getColumnCount()) {
40574
40761
  this._hscrollbar.enable();
@@ -40850,6 +41037,7 @@ Core.prototype._syncLayoutToColumns = function (from, to, opt_forceDispatching)
40850
41037
  var paneChanged = forceUpdate || (from < this.getHScrollStartIndex()) || (to > this.getFirstPinnedRightIndex());
40851
41038
  this._updateScrollbarWidth(paneChanged, true /* contentChanged */);
40852
41039
  this._updateColumnBounds();
41040
+ this._updateColumnSeparators();
40853
41041
  this._dispatchColumnPositionChanged();
40854
41042
 
40855
41043
  if (dirty || opt_forceDispatching) {
@@ -40945,6 +41133,7 @@ Core.prototype._updateLayout = function () {
40945
41133
  var section = this._settings[s].getSection();
40946
41134
  section.updateLayout(); // Notify section about forced recalculation of the layout
40947
41135
  }
41136
+ this._updateColumnSeparators();
40948
41137
  };
40949
41138
 
40950
41139
  /** @private */
@@ -43907,6 +44096,7 @@ var Grid = function(placeholder, config) {
43907
44096
  t._dc = new DataCache_DataCache();
43908
44097
  t._dc.listen("dataChanged", t._onDataChanged);
43909
44098
  t._dc.listen("dataComposed", t._onDataComposed);
44099
+ t._dc.addStaticFields([ROW_DEF, SUB_ID]); // Static fields are deprecated, set fields to be ignore during clone in DataCache
43910
44100
 
43911
44101
  t._dt = new DataTable();
43912
44102
  t._dt.setSortingLogic(/** @type{Function} */(t._mainSorter));
@@ -45107,8 +45297,11 @@ Grid.prototype.replaceColumn = function (columnOption, colRef) {
45107
45297
  if(colDef.getChildren()) { // Parent time series field doesn't provide hidden property
45108
45298
  colConfig["hidden"] = false;
45109
45299
  }
45300
+
45301
+ this._grid.startBatch("reset");
45110
45302
  this.insertColumn(colConfig, colIndex);
45111
45303
  this.removeColumn(colIndex + 1); // remove existing column after insert
45304
+ this._grid.stopBatch("reset");
45112
45305
  };
45113
45306
 
45114
45307
  /** to update column name when field info is loaded
@@ -45369,11 +45562,6 @@ Grid.prototype._onColumnAdded = function(e) {
45369
45562
  this._grid.enableColumnClass(idx, classes[i]);
45370
45563
  }
45371
45564
  var colField = colDef.getField();
45372
- if (!colDef.isRealTimeField()) {
45373
- if(this._dc) {
45374
- this._dc.addStaticFields([colField]);
45375
- }
45376
- }
45377
45565
  this._grid.setDataColumnName(idx, ROW_DEF); // This make ColumnDefinition renderer work
45378
45566
  var fields = colDef.getAllFields();
45379
45567
  var referrer = colDef.getId();
@@ -49555,6 +49743,13 @@ MockSubscriptions.prototype._generateQuoteData = function(sub, fields) {
49555
49743
  values[field] = data.value;
49556
49744
  values[formattedField] = data.formattedValue;
49557
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
+ }
49558
49753
  return values;
49559
49754
  };
49560
49755