@refinitiv-ui/efx-grid 6.0.91 → 6.0.92

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. package/lib/column-dragging/es6/ColumnDragging.d.ts +1 -1
  2. package/lib/column-dragging/es6/ColumnDragging.js +144 -34
  3. package/lib/core/dist/core.js +2410 -2621
  4. package/lib/core/dist/core.min.js +1 -1
  5. package/lib/core/es6/data/ColumnStats.js +14 -14
  6. package/lib/core/es6/data/DataCache.js +118 -118
  7. package/lib/core/es6/data/DataTable.d.ts +3 -1
  8. package/lib/core/es6/data/DataTable.js +208 -190
  9. package/lib/core/es6/data/DataView.d.ts +1 -1
  10. package/lib/core/es6/data/DataView.js +291 -291
  11. package/lib/core/es6/data/Segment.js +79 -79
  12. package/lib/core/es6/data/SegmentCollection.js +81 -81
  13. package/lib/core/es6/data/WrappedView.js +41 -41
  14. package/lib/core/es6/grid/Core.js +635 -635
  15. package/lib/core/es6/grid/ILayoutGrid.js +1 -1
  16. package/lib/core/es6/grid/LayoutGrid.js +183 -183
  17. package/lib/core/es6/grid/VirtualizedLayoutGrid.js +91 -91
  18. package/lib/core/es6/grid/components/Cell.js +29 -29
  19. package/lib/core/es6/grid/components/CellFloatingPanel.js +11 -11
  20. package/lib/core/es6/grid/components/CellSpan.js +7 -7
  21. package/lib/core/es6/grid/components/CellSpans.js +36 -34
  22. package/lib/core/es6/grid/components/Column.js +40 -40
  23. package/lib/core/es6/grid/components/ElementWrapper.js +17 -17
  24. package/lib/core/es6/grid/components/HScrollbar.js +31 -31
  25. package/lib/core/es6/grid/components/Scrollbar.js +77 -77
  26. package/lib/core/es6/grid/components/StretchedCells.js +49 -49
  27. package/lib/core/es6/grid/components/VScrollbar.js +11 -11
  28. package/lib/core/es6/grid/components/VirtualItems.js +3 -3
  29. package/lib/core/es6/grid/event/EventDispatcher.js +9 -9
  30. package/lib/core/es6/grid/event/EventListeners.js +4 -4
  31. package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +186 -186
  32. package/lib/core/es6/grid/util/Conflator.js +4 -4
  33. package/lib/core/es6/grid/util/Reverter.js +1 -1
  34. package/lib/core/es6/grid/util/SectionSettings.js +20 -20
  35. package/lib/core/es6/grid/util/SelectionList.js +23 -23
  36. package/lib/core/es6/grid/util/TrackLayout.js +74 -74
  37. package/lib/core/es6/grid/util/Virtualizer.js +15 -15
  38. package/lib/core/es6/grid/util/util.js +20 -20
  39. package/lib/core/es6/index.d.ts +0 -2
  40. package/lib/core/es6/index.js +0 -3
  41. package/lib/grid/index.js +1 -1
  42. package/lib/rt-grid/dist/rt-grid.js +193 -70
  43. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  44. package/lib/rt-grid/es6/Grid.js +46 -30
  45. package/lib/rt-grid/es6/RowDefinition.d.ts +2 -1
  46. package/lib/rt-grid/es6/RowDefinition.js +74 -16
  47. package/lib/tr-grid-cell-selection/es6/CellSelection.js +56 -1
  48. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.d.ts +3 -1
  49. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +29 -1
  50. package/lib/tr-grid-util/es6/CellPainter.js +94 -93
  51. package/lib/tr-grid-util/es6/Conflator.js +4 -4
  52. package/lib/tr-grid-util/es6/CoralItems.js +6 -6
  53. package/lib/tr-grid-util/es6/DateTime.js +39 -39
  54. package/lib/tr-grid-util/es6/Deferred.js +5 -5
  55. package/lib/tr-grid-util/es6/Delay.js +1 -1
  56. package/lib/tr-grid-util/es6/Dom.js +26 -26
  57. package/lib/tr-grid-util/es6/DragUI.js +17 -17
  58. package/lib/tr-grid-util/es6/ElementObserver.js +12 -12
  59. package/lib/tr-grid-util/es6/ElementWrapper.js +2 -2
  60. package/lib/tr-grid-util/es6/ElfDate.js +4 -4
  61. package/lib/tr-grid-util/es6/ElfUtil.js +37 -37
  62. package/lib/tr-grid-util/es6/EventDispatcher.js +12 -12
  63. package/lib/tr-grid-util/es6/ExpanderIcon.js +6 -6
  64. package/lib/tr-grid-util/es6/ExpressionParser.js +43 -43
  65. package/lib/tr-grid-util/es6/Ext.js +6 -6
  66. package/lib/tr-grid-util/es6/FieldFormatter.js +17 -17
  67. package/lib/tr-grid-util/es6/FilterBuilder.js +57 -57
  68. package/lib/tr-grid-util/es6/FilterOperators.d.ts +12 -1
  69. package/lib/tr-grid-util/es6/FilterOperators.js +13 -2
  70. package/lib/tr-grid-util/es6/GridPlugin.js +86 -86
  71. package/lib/tr-grid-util/es6/GroupDefinitions.js +90 -90
  72. package/lib/tr-grid-util/es6/Icon.js +4 -4
  73. package/lib/tr-grid-util/es6/MouseDownTrait.js +6 -6
  74. package/lib/tr-grid-util/es6/MultiTableManager.js +68 -68
  75. package/lib/tr-grid-util/es6/NumberFormatter.js +22 -22
  76. package/lib/tr-grid-util/es6/PercentBar.js +17 -17
  77. package/lib/tr-grid-util/es6/Perf.js +5 -5
  78. package/lib/tr-grid-util/es6/Popup.js +42 -42
  79. package/lib/tr-grid-util/es6/RangeBar.js +5 -5
  80. package/lib/tr-grid-util/es6/RequestQueue.js +5 -5
  81. package/lib/tr-grid-util/es6/RowPainter.js +23 -23
  82. package/lib/tr-grid-util/es6/SubTable.js +94 -94
  83. package/lib/tr-grid-util/es6/Table.js +51 -51
  84. package/lib/tr-grid-util/es6/TextHighlighter.js +49 -49
  85. package/lib/tr-grid-util/es6/TickCodes.js +2 -2
  86. package/lib/tr-grid-util/es6/Timer.js +2 -2
  87. package/lib/tr-grid-util/es6/TouchProxy.js +7 -7
  88. package/lib/tr-grid-util/es6/Util.js +50 -50
  89. package/lib/tr-grid-util/es6/formula/ADCService.js +2 -2
  90. package/lib/tr-grid-util/es6/formula/ADCSubscription.js +19 -19
  91. package/lib/tr-grid-util/es6/formula/AdFinService.js +2 -2
  92. package/lib/tr-grid-util/es6/formula/AdFinSubscription.js +19 -19
  93. package/lib/tr-grid-util/es6/formula/Engine.js +56 -56
  94. package/lib/tr-grid-util/es6/formula/Formula.js +62 -62
  95. package/lib/tr-grid-util/es6/formula/IntervalSubscription.js +3 -3
  96. package/lib/tr-grid-util/es6/formula/Realtime.js +15 -15
  97. package/lib/tr-grid-util/es6/formula/RealtimeService.js +15 -15
  98. package/lib/tr-grid-util/es6/formula/TSIService.js +2 -2
  99. package/lib/tr-grid-util/es6/formula/TSISubscription.js +104 -104
  100. package/lib/tr-grid-util/es6/formula/VariableToken.js +20 -20
  101. package/lib/tr-grid-util/es6/formula/functions/AdFin.js +10 -10
  102. package/lib/tr-grid-util/es6/formula/functions/Excel.js +1 -1
  103. package/lib/tr-grid-util/es6/formula/functions/Info.js +2 -2
  104. package/lib/tr-grid-util/es6/formula/functions/Internal.js +5 -5
  105. package/lib/tr-grid-util/es6/formula/functions/Logic.js +5 -5
  106. package/lib/tr-grid-util/es6/formula/functions/Math.js +46 -46
  107. package/lib/tr-grid-util/es6/formula/functions/Statistics.js +27 -27
  108. package/lib/tr-grid-util/es6/formula/functions/Text.js +19 -19
  109. package/lib/tr-grid-util/es6/index.js +1 -1
  110. package/lib/tr-grid-util/es6/jet/Adc.js +36 -36
  111. package/lib/tr-grid-util/es6/jet/CollectionDict.js +11 -11
  112. package/lib/tr-grid-util/es6/jet/DataGenerator.js +95 -95
  113. package/lib/tr-grid-util/es6/jet/DataSet.js +1 -1
  114. package/lib/tr-grid-util/es6/jet/MockArchive.js +5 -5
  115. package/lib/tr-grid-util/es6/jet/MockJET.js +1 -1
  116. package/lib/tr-grid-util/es6/jet/MockQuotes.js +13 -13
  117. package/lib/tr-grid-util/es6/jet/MockQuotes2.js +100 -100
  118. package/lib/tr-grid-util/es6/jet/MockRTK.js +4 -4
  119. package/lib/tr-grid-util/es6/jet/MockUtil.js +2 -2
  120. package/lib/tr-grid-util/es6/jet/index.js +1 -1
  121. package/lib/tr-grid-util/es6/jet/mockDataAPI.js +15 -15
  122. package/lib/tr-grid-util/es6/locale/translation-de.js +1 -1
  123. package/lib/tr-grid-util/es6/locale/translation-en.js +1 -1
  124. package/lib/tr-grid-util/es6/locale/translation-ja.js +1 -1
  125. package/lib/tr-grid-util/es6/locale/translation-zh-hant.js +1 -1
  126. package/lib/tr-grid-util/es6/locale/translation-zh.js +1 -1
  127. package/lib/tr-grid-util/es6/locale/translation.js +1 -1
  128. package/lib/types/es6/ColumnDragging.d.ts +1 -1
  129. package/lib/types/es6/ColumnGrouping.d.ts +3 -1
  130. package/lib/types/es6/Core/data/DataTable.d.ts +4 -0
  131. package/lib/types/es6/Core/data/DataView.d.ts +2 -0
  132. package/lib/types/es6/Core/data/SegmentCollection.d.ts +2 -0
  133. package/lib/types/es6/Core/index.d.ts +0 -2
  134. package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +2 -1
  135. package/lib/versions.json +4 -4
  136. package/package.json +1 -1
  137. package/lib/core/es6/grid/util/ElementFrameWork.d.ts +0 -18
  138. package/lib/core/es6/grid/util/ElementFrameWork.js +0 -227
  139. package/lib/core/es6/grid/util/HttpRequest.d.ts +0 -53
  140. package/lib/core/es6/grid/util/HttpRequest.js +0 -371
  141. package/lib/core/es6/grid/util/PercentBar.d.ts +0 -43
  142. package/lib/core/es6/grid/util/PercentBar.js +0 -390
  143. package/lib/core/es6/grid/util/PercentBarRenderer.d.ts +0 -41
  144. package/lib/core/es6/grid/util/PercentBarRenderer.js +0 -316
  145. package/lib/core/es6/grid/util/RangeBar.d.ts +0 -25
  146. package/lib/core/es6/grid/util/RangeBar.js +0 -255
  147. package/lib/types/es6/Core/grid/util/ElementFrameWork.d.ts +0 -18
  148. package/lib/types/es6/Core/grid/util/HttpRequest.d.ts +0 -53
  149. package/lib/types/es6/Core/grid/util/PercentBar.d.ts +0 -43
  150. package/lib/types/es6/Core/grid/util/PercentBarRenderer.d.ts +0 -41
  151. package/lib/types/es6/Core/grid/util/RangeBar.d.ts +0 -25
@@ -35,7 +35,7 @@ const DEFAULT_DATE_TIME_FORMAT = "MM/DD/YYYY";
35
35
  * @param {string} formatType
36
36
  * @return {string}
37
37
  */
38
- var toDateTimeType = function(formatType) {
38
+ let toDateTimeType = function(formatType) {
39
39
  if (formatType != null && DATE_TIME_TYPE[formatType.toUpperCase()]) {
40
40
  return DATE_TIME;
41
41
  }
@@ -45,11 +45,11 @@ var toDateTimeType = function(formatType) {
45
45
  /** @constructor
46
46
  * @param {FieldFormatter~Options=} options
47
47
  * @example
48
- * var ff = new FieldFormatter();
48
+ * let ff = new FieldFormatter();
49
49
  * ff.format(anyValue);
50
50
  * ff.getOptions(); // For serialization
51
51
  */
52
- var FieldFormatter = function(options) {
52
+ let FieldFormatter = function(options) {
53
53
  this["format"] = this.format = this.format.bind(this); // Always export bound format method
54
54
 
55
55
  FieldFormatter._startMidnightInterval();
@@ -126,8 +126,8 @@ FieldFormatter._updateMidnight = function() {
126
126
  FieldFormatter._startMidnightInterval = function() {
127
127
  if(!FieldFormatter._lastMidnight) {
128
128
  FieldFormatter._updateMidnight();
129
- var currentMidnight = FieldFormatter._lastMidnight.valueOf();
130
- var timeUntilNextUpdate = currentMidnight + 86405000 - (new Date().valueOf()); // delay to the next midnight + 5sec
129
+ let currentMidnight = FieldFormatter._lastMidnight.valueOf();
130
+ let timeUntilNextUpdate = currentMidnight + 86405000 - (new Date().valueOf()); // delay to the next midnight + 5sec
131
131
  setTimeout(FieldFormatter._setMidnightInterval, timeUntilNextUpdate);
132
132
  }
133
133
  };
@@ -148,15 +148,15 @@ FieldFormatter.prototype.init = function(options) { // deserialize
148
148
  return;
149
149
  }
150
150
 
151
- var val = options["field"];
151
+ let val = options["field"];
152
152
  if(val) {
153
153
  // DateTime pairs come from the JET's user settings
154
154
  // Datetime paired will have special column that suffix with "_COMBINED"
155
155
  this.setField(val); // , (this._dateTimePairs[field]) ? field + "_COMBINED" : "");
156
156
  }
157
157
 
158
- var formatType = /** @type{string} */(options["formatType"] || options["type"]);
159
- var fieldDataType = options["fieldDataType"]; // Keep backward compatibility
158
+ let formatType = /** @type{string} */(options["formatType"] || options["type"]);
159
+ let fieldDataType = options["fieldDataType"]; // Keep backward compatibility
160
160
  this._userFormatType = formatType || fieldDataType;
161
161
 
162
162
  formatType = toDateTimeType(this._userFormatType);
@@ -165,8 +165,8 @@ FieldFormatter.prototype.init = function(options) { // deserialize
165
165
  if(val) {
166
166
  this.setFormatType(val);
167
167
  }
168
- var dtf = options["dateTimeFormat"];
169
- var utc = options["useUTCTime"];
168
+ let dtf = options["dateTimeFormat"];
169
+ let utc = options["useUTCTime"];
170
170
  if(utc != null || dtf != null) {
171
171
  this.setDateTimeMeta(
172
172
  dtf,
@@ -211,7 +211,7 @@ FieldFormatter.prototype.getField = function() {
211
211
  * @return {FieldFormatter}
212
212
  */
213
213
  FieldFormatter.prototype.clone = function() {
214
- var newFF = new FieldFormatter();
214
+ let newFF = new FieldFormatter();
215
215
  newFF._field = this._field;
216
216
  newFF._formattedField = this._formattedField;
217
217
  newFF._combinedField = this._combinedField;
@@ -279,7 +279,7 @@ FieldFormatter.prototype.setNumberFormatter = function(formatter) {
279
279
  };
280
280
 
281
281
  FieldFormatter.prototype.getProperties = function() {
282
- var obj = {
282
+ let obj = {
283
283
  "field": this._field,
284
284
  "formattedField": this._formattedField,
285
285
  "combinedField": this._combinedField,
@@ -350,7 +350,7 @@ FieldFormatter.prototype._format = function(val, rowData) {
350
350
 
351
351
  if(this._nf) { // Number formatter will override any default field format
352
352
  if(typeof val != "number") { // string
353
- var num = (+val); // Only convertible value will be formatted by the number formatter
353
+ let num = (+val); // Only convertible value will be formatted by the number formatter
354
354
  return (num === num) ? this._nf(num) : val + "";
355
355
  }
356
356
 
@@ -375,19 +375,19 @@ FieldFormatter.prototype._format = function(val, rowData) {
375
375
  FieldFormatter.prototype._formatDateTime = function(val, rowData) {
376
376
  if(!this._df) { return ""; }
377
377
  if(this._idnSource) { // IDN Source will send time in second instead of millisecond.
378
- var sec = +val; // Date object can be converted to number
378
+ let sec = +val; // Date object can be converted to number
379
379
  if(sec !== sec) { // NaN checking
380
380
  return val; // WARNING: val could be number
381
381
  }
382
382
 
383
- var cmbValue = (rowData && this._combinedField) ? +rowData[this._combinedField] : NaN;
383
+ let cmbValue = (rowData && this._combinedField) ? +rowData[this._combinedField] : NaN;
384
384
  if(cmbValue === cmbValue) { // Combined value is not NaN
385
385
  sec = cmbValue;
386
386
  } else if(sec < 86400) { // No paired date and sec < 24 hours -> this is a time within this day
387
387
  sec += FieldFormatter._lastMidnight.valueOf() / 1000;
388
388
  } else { // No paired sec. Date need to add for timezone
389
389
  if((this._field !== "NEWS_TIME") && (this._timeZone === "LOCAL")) {
390
- var d = new Date(sec * 1000); // Need to know the timezone of given date
390
+ let d = new Date(sec * 1000); // Need to know the timezone of given date
391
391
  sec += d.getTimezoneOffset() * 60;
392
392
  }
393
393
  }
@@ -401,7 +401,7 @@ FieldFormatter.prototype._formatDateTime = function(val, rowData) {
401
401
  * @return {string}
402
402
  */
403
403
  FieldFormatter.prototype._formatNumber = function(val, rowData) {
404
- var ff;
404
+ let ff;
405
405
  if(rowData) {
406
406
  ff = rowData[this._formattedField];
407
407
  if(!ff) { // null, undefined, empty string, zero, or NaN
@@ -25,7 +25,7 @@ import { ExpressionParser } from "./ExpressionParser.js";
25
25
  * @type {Object.<string, number>}
26
26
  * @const
27
27
  */
28
- var connectorMap = {
28
+ let connectorMap = {
29
29
  "or": 1,
30
30
  "OR": 1,
31
31
  "Or": 1,
@@ -38,7 +38,7 @@ var connectorMap = {
38
38
  * @param {*} val
39
39
  * @return {number}
40
40
  */
41
- var convertToNumber = function(val) {
41
+ let convertToNumber = function(val) {
42
42
  if(typeof val === "number") {
43
43
  return val;
44
44
  }
@@ -56,17 +56,17 @@ var convertToNumber = function(val) {
56
56
  /** @private
57
57
  * @type {RegExp}
58
58
  */
59
- var _dateStringRule = /^\w{3} \w{3}/;
59
+ let _dateStringRule = /^\w{3} \w{3}/;
60
60
  /** Convert default string natively generated from a Date object to a Date object. For instance, string "Sun Sep 09 2001 08:46:40 GMT+0700 (Indochina Time)" can be converted, while string "2001-09-09" cannot be converted.
61
61
  * @public
62
62
  * @function
63
63
  * @param {*} str
64
64
  * @return {*} Return Date object for successful conversion, otherwise the same input string
65
65
  */
66
- var stringToDateObject = function(str) {
66
+ let stringToDateObject = function(str) {
67
67
  if(typeof str === "string") {
68
- var dateObj = new Date(str);
69
- var t = dateObj.getTime();
68
+ let dateObj = new Date(str);
69
+ let t = dateObj.getTime();
70
70
  if(t === t) {
71
71
  if(_dateStringRule.test(str)) {
72
72
  return dateObj;
@@ -80,7 +80,7 @@ var stringToDateObject = function(str) {
80
80
  * @param {*} val
81
81
  * @return {string}
82
82
  */
83
- var convertToString = function(val) {
83
+ let convertToString = function(val) {
84
84
  if(typeof val === "string") {
85
85
  return val;
86
86
  }
@@ -102,7 +102,7 @@ var convertToString = function(val) {
102
102
  * @param {boolean=} useUTCTime
103
103
  * @return {number}
104
104
  */
105
- var convertToDateValue = function(dateObj, useUTCTime) {
105
+ let convertToDateValue = function(dateObj, useUTCTime) {
106
106
  if(dateObj && dateObj.getTime) {
107
107
  if(useUTCTime) {
108
108
  return dateObj.getUTCFullYear() * 10000 + dateObj.getUTCMonth() * 100 + dateObj.getUTCDate();
@@ -118,26 +118,26 @@ var convertToDateValue = function(dateObj, useUTCTime) {
118
118
  * @param {Object} rowData
119
119
  * @return {boolean}
120
120
  */
121
- var _filterByConditions = function(ctx, rowData) {
122
- var conds = ctx._conds;
123
- var condCount = conds ? conds.length : 0;
121
+ let _filterByConditions = function(ctx, rowData) {
122
+ let conds = ctx._conds;
123
+ let condCount = conds ? conds.length : 0;
124
124
 
125
125
  if(!condCount) {
126
126
  return true; // There is no filter condition
127
127
  }
128
128
 
129
- var fieldName = ctx._fieldName;
130
- var fmtFieldName = ctx._formattedFieldName;
129
+ let fieldName = ctx._fieldName;
130
+ let fmtFieldName = ctx._formattedFieldName;
131
131
 
132
- var val = rowData[fieldName];
132
+ let val = rowData[fieldName];
133
133
  if(ctx._rawDataAccessor) {
134
134
  val = ctx._rawDataAccessor(val);
135
135
  }
136
- var str, lowercasedStr, num, dateVal; // intentionally left undefined
137
- var finalResult = false;
138
- var result = false;
139
- for(var i = 0; i < condCount; ++i) {
140
- var orConnector = 0;
136
+ let str, lowercasedStr, num, dateVal; // intentionally left undefined
137
+ let finalResult = false;
138
+ let result = false;
139
+ for(let i = 0; i < condCount; ++i) {
140
+ let orConnector = 0;
141
141
  if(i > 0) {
142
142
  orConnector = connectorMap[conds[i - 1].connector];
143
143
  // TODO: AND operator has higher precedence than OR operator
@@ -150,13 +150,13 @@ var _filterByConditions = function(ctx, rowData) {
150
150
  }
151
151
  }
152
152
 
153
- var cond = conds[i];
154
- var opDef = FilterOperators[cond.operatorId];
153
+ let cond = conds[i];
154
+ let opDef = FilterOperators[cond.operatorId];
155
155
  result = false;
156
156
 
157
- var opType = opDef.type;
158
- var opId = opDef.id;
159
- var opFunc = OperatorFunctions[opId];
157
+ let opType = opDef.type;
158
+ let opId = opDef.id;
159
+ let opFunc = OperatorFunctions[opId];
160
160
  if(opType === "blank") {
161
161
  result = opFunc(val);
162
162
  } else if(opType === "number") {
@@ -215,8 +215,8 @@ var _filterByConditions = function(ctx, rowData) {
215
215
  * @param {Object} rowData
216
216
  * @return {boolean}
217
217
  */
218
- var _filterByObjectMap = function(ctx, rowData) {
219
- var val = rowData[ctx._fieldName];
218
+ let _filterByObjectMap = function(ctx, rowData) {
219
+ let val = rowData[ctx._fieldName];
220
220
  if(ctx._rawDataAccessor) {
221
221
  val = ctx._rawDataAccessor(val);
222
222
  }
@@ -229,7 +229,7 @@ var _filterByObjectMap = function(ctx, rowData) {
229
229
  * @param {Object} cond Internal condition object
230
230
  * @return {FilterBuilder~Condition}
231
231
  */
232
- var conditionToArray = function(cond) {
232
+ let conditionToArray = function(cond) {
233
233
  return [
234
234
  cond.operatorId,
235
235
  cond.origValue,
@@ -241,7 +241,7 @@ var conditionToArray = function(cond) {
241
241
  * @constructor
242
242
  * @param {FilterBuilder~Options=} options
243
243
  */
244
- var FilterBuilder = function (options) {
244
+ let FilterBuilder = function (options) {
245
245
  this._initStaticVariables();
246
246
 
247
247
  this._conditions = [];
@@ -255,7 +255,7 @@ FilterBuilder.prototype._initStaticVariables = function() {
255
255
  FilterBuilder._initStatic = true;
256
256
 
257
257
  FilterBuilder._updateTimezoneOffset();
258
- var timeUntilNextDay = 86400000 - (new Date() % 86400000);
258
+ let timeUntilNextDay = 86400000 - (new Date() % 86400000);
259
259
  setTimeout(FilterBuilder._setUpdateInterval, timeUntilNextDay);
260
260
  }
261
261
  };
@@ -328,20 +328,20 @@ FilterBuilder.prototype.init = function(options) {
328
328
  if(!options) {
329
329
  return;
330
330
  }
331
- var field = options["field"];
331
+ let field = options["field"];
332
332
  if(field) {
333
333
  this.setFieldDefinition(field, options["formatter"], options["formattedField"]);
334
334
  } else if(field != null) {
335
335
  this.setFieldDefinition("");
336
336
  }
337
337
 
338
- var useUTCTime = options["useUTCTime"];
338
+ let useUTCTime = options["useUTCTime"];
339
339
  if(useUTCTime != null) {
340
340
  this._useUTCTime = useUTCTime ? true : false;
341
341
  }
342
342
 
343
- var rawDataAccessor = options["rawDataAccessor"];
344
- var formattedDataAccessor = options["formattedDataAccessor"];
343
+ let rawDataAccessor = options["rawDataAccessor"];
344
+ let formattedDataAccessor = options["formattedDataAccessor"];
345
345
  if(rawDataAccessor != null || formattedDataAccessor != null) {
346
346
  this.setDataAccessors(rawDataAccessor, formattedDataAccessor);
347
347
  }
@@ -381,8 +381,8 @@ FilterBuilder.prototype.setDataAccessors = function(rawDataAccessor, formattedDa
381
381
  * @return {boolean} Return true, if the new condition is added
382
382
  */
383
383
  FilterBuilder.prototype.addCondition = function (oper, value, connector, useUTCTime) {
384
- var opId = oper ? oper.toUpperCase() : "";
385
- var opDef = FilterOperators[opId];
384
+ let opId = oper ? oper.toUpperCase() : "";
385
+ let opDef = FilterOperators[opId];
386
386
  if (!opDef) {
387
387
  return false; // Unknown operation
388
388
  }
@@ -395,7 +395,7 @@ FilterBuilder.prototype.addCondition = function (oper, value, connector, useUTCT
395
395
  return false; // Invalid comparer value ("", null, undefined, NaN)
396
396
  }
397
397
  }
398
- var cond = {
398
+ let cond = {
399
399
  operatorId: opId,
400
400
  origValue: value,
401
401
  connector: connector || ""
@@ -412,11 +412,11 @@ FilterBuilder.prototype.addCondition = function (oper, value, connector, useUTCT
412
412
  * @return {number} Return number of conditions being added.
413
413
  */
414
414
  FilterBuilder.prototype.addConditions = function (conditions) {
415
- var count = 0;
415
+ let count = 0;
416
416
  if(Array.isArray(conditions)) {
417
- var len = conditions.length;
418
- for(var i = 0; i < len; ++i) {
419
- var condition = conditions[i];
417
+ let len = conditions.length;
418
+ for(let i = 0; i < len; ++i) {
419
+ let condition = conditions[i];
420
420
  if(Array.isArray(condition)) {
421
421
  if(this.addCondition(condition[0], condition[1], condition[2], condition[3])) {
422
422
  ++count;
@@ -449,25 +449,25 @@ FilterBuilder.prototype.buildFilter = function() {
449
449
  if (!this._fieldName) {
450
450
  return null;
451
451
  }
452
- var condCount = this._conditions.length;
452
+ let condCount = this._conditions.length;
453
453
  if(!condCount) {
454
454
  return null;
455
455
  }
456
456
 
457
457
  // Prepare user value to be in ready to use form to boost performance
458
- var formatter = this._formatter;
459
- var conds = this._conditions.slice();
460
- for(var i = 0; i < condCount; ++i) {
461
- var cond = conds[i];
462
- var opDef = FilterOperators[cond.operatorId];
463
- var opType = opDef.type;
464
- var value = cond.origValue;
458
+ let formatter = this._formatter;
459
+ let conds = this._conditions.slice();
460
+ for(let i = 0; i < condCount; ++i) {
461
+ let cond = conds[i];
462
+ let opDef = FilterOperators[cond.operatorId];
463
+ let opType = opDef.type;
464
+ let value = cond.origValue;
465
465
 
466
466
  if(opType === "number") {
467
467
  value = stringToDateObject(value);
468
468
  value = convertToNumber(value);
469
469
  } else if(opType === "date") {
470
- var dateObj = null;
470
+ let dateObj = null;
471
471
  if(value instanceof Date) {
472
472
  dateObj = value;
473
473
  } else if(typeof value === "number" || typeof value === "string") {
@@ -487,7 +487,7 @@ FilterBuilder.prototype.buildFilter = function() {
487
487
  cond.value = value;
488
488
  }
489
489
 
490
- var ctx = {
490
+ let ctx = {
491
491
  _conds: conds,
492
492
  _fieldName: this._fieldName || "",
493
493
  _formatter: formatter || null,
@@ -510,11 +510,11 @@ FilterBuilder.prototype.buildFilter = function() {
510
510
  */
511
511
  FilterBuilder.prototype.buildMonitorFilter = function(filterStr, field, formatter, formattedField) {
512
512
  this.setFieldDefinition(field, formatter, formattedField);
513
- var needConvertValue = (field.lastIndexOf("_LOCAL") === field.length - 6); // _LOCAL field is special monitor field which convert time value to local timezone (idn)
513
+ let needConvertValue = (field.lastIndexOf("_LOCAL") === field.length - 6); // _LOCAL field is special monitor field which convert time value to local timezone (idn)
514
514
 
515
- var conds = filterStr.split("♣");
516
- for (var i = 0; i < conds.length; i++) {
517
- var tokens = conds[i].split("♦");
515
+ let conds = filterStr.split("♣");
516
+ for (let i = 0; i < conds.length; i++) {
517
+ let tokens = conds[i].split("♦");
518
518
  if(needConvertValue) {
519
519
  tokens[1] = ((tokens[1] - FilterBuilder._timezoneOffset) % 86400) + ""; // Convert to local timezone value for range filtering
520
520
  }
@@ -530,11 +530,11 @@ FilterBuilder.prototype.buildMonitorFilter = function(filterStr, field, formatte
530
530
  * @param {Function=} rawDataAccessor Raw data getter for custom data type
531
531
  * @return {Function}
532
532
  */
533
- var buildFilterFromObjectMap = function(obj, field, rawDataAccessor) {
533
+ let buildFilterFromObjectMap = function(obj, field, rawDataAccessor) {
534
534
  if(!obj || !field) {
535
535
  return null;
536
536
  }
537
- var ctx = {
537
+ let ctx = {
538
538
  _fieldName: field,
539
539
  _itemMap: obj
540
540
  };
@@ -555,7 +555,7 @@ var buildFilterFromObjectMap = function(obj, field, rawDataAccessor) {
555
555
  * @return {Function} Filter function that takes rowData object
556
556
  */
557
557
  FilterBuilder.prototype.parse = function(condition, field, formatter, formattedField, rawDataAccessor, formattedDataAccessor) {
558
- var type = typeof(condition);
558
+ let type = typeof(condition);
559
559
  if(type === "string") {
560
560
  if(condition.indexOf("♦") >= 0) {
561
561
  return this.buildMonitorFilter(condition, field, formatter, formattedField);
@@ -3,6 +3,7 @@
3
3
  declare namespace FilterOperators {
4
4
 
5
5
  type Operator = {
6
+ id: string,
6
7
  name: string,
7
8
  type: string,
8
9
  positive: number,
@@ -32,7 +33,17 @@ declare namespace FilterOperators {
32
33
  DTB: FilterOperators.Operator,
33
34
  TXTEQ: FilterOperators.Operator,
34
35
  BLANK: FilterOperators.Operator,
35
- NBLANK: FilterOperators.Operator
36
+ NBLANK: FilterOperators.Operator,
37
+ NEQ_BLANK: FilterOperators.Operator,
38
+ GREATER_THAN: FilterOperators.Operator,
39
+ GREATER_THAN_OR_EQUAL_TO: FilterOperators.Operator,
40
+ EQUAL_TO: FilterOperators.Operator,
41
+ LESS_THAN: FilterOperators.Operator,
42
+ LESS_THAN_OR_EQUAL_TO: FilterOperators.Operator,
43
+ TEXT_THAT_CONTAINS: FilterOperators.Operator,
44
+ TEXT_THAT_NOT_CONTAINS: FilterOperators.Operator,
45
+ TEXT_IS: FilterOperators.Operator,
46
+ NOT_BLANK: FilterOperators.Operator
36
47
  };
37
48
 
38
49
  }
@@ -1,4 +1,5 @@
1
1
  /** @typedef {Object} FilterOperators~Operator
2
+ * @property {string} id Short name of the operator
2
3
  * @property {string} name Full name of the operator
3
4
  * @property {string} type Data type of the parameters required by the operator (e.g., number, string)
4
5
  * @property {number} positive The value indicates that the operator has positive connotation. The negative counterparts for EQ and BEGIN are NEQ and NBEGIN respectively.
@@ -29,13 +30,23 @@
29
30
  * @property {!FilterOperators~Operator} TXTEQ Alias to EQ
30
31
  * @property {!FilterOperators~Operator} BLANK Alias to EQ_BLANK
31
32
  * @property {!FilterOperators~Operator} NBLANK Alias to EQ_NBLANK
33
+ * @property {!FilterOperators~Operator} NEQ_BLANK Alias to EQ_NBLANK
34
+ * @property {!FilterOperators~Operator} GREATER_THAN Alias to GT
35
+ * @property {!FilterOperators~Operator} GREATER_THAN_OR_EQUAL_TO Alias to GTE
36
+ * @property {!FilterOperators~Operator} EQUAL_TO Alias to EQ
37
+ * @property {!FilterOperators~Operator} LESS_THAN Alias to LT
38
+ * @property {!FilterOperators~Operator} LESS_THAN_OR_EQUAL_TO Alias to LTE
39
+ * @property {!FilterOperators~Operator} TEXT_THAT_CONTAINS Alias to CONT
40
+ * @property {!FilterOperators~Operator} TEXT_THAT_NOT_CONTAINS Alias to NCONT
41
+ * @property {!FilterOperators~Operator} TEXT_IS Alias to EQ
42
+ * @property {!FilterOperators~Operator} NOT_BLANK Alias to EQ_NBLANK
32
43
  */
33
44
 
34
45
  /** @type {!FilterOperators~Operators}
35
46
  * @public
36
47
  * @const
37
48
  */
38
- var FilterOperators = {
49
+ let FilterOperators = {
39
50
  EQ: {
40
51
  id: "EQ",
41
52
  name: "Equal to",
@@ -214,7 +225,7 @@ FilterOperators.NOT_BLANK = FilterOperators.EQ_NBLANK;
214
225
  * @public
215
226
  * @const
216
227
  */
217
- var OperatorFunctions = {
228
+ let OperatorFunctions = {
218
229
  EQ: function(str, input) { return str == input; },
219
230
  NEQ: function(str, input) { return str != input; },
220
231
  NUMEQ: function(num, input) { return num == input; },