@refinitiv-ui/efx-grid 6.0.91 → 6.0.93

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) 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/filter-dialog/lib/filter-dialog.js +1 -0
  42. package/lib/grid/index.js +1 -1
  43. package/lib/rt-grid/dist/rt-grid.js +193 -70
  44. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  45. package/lib/rt-grid/es6/Grid.js +46 -30
  46. package/lib/rt-grid/es6/RowDefinition.d.ts +2 -1
  47. package/lib/rt-grid/es6/RowDefinition.js +74 -16
  48. package/lib/tr-grid-cell-selection/es6/CellSelection.js +56 -1
  49. package/lib/tr-grid-checkbox/es6/Checkbox.js +268 -268
  50. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.d.ts +3 -2
  51. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +60 -32
  52. package/lib/tr-grid-column-stack/es6/ColumnStack.js +279 -279
  53. package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +227 -207
  54. package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +11 -11
  55. package/lib/tr-grid-row-dragging/es6/RowDragging.d.ts +1 -2
  56. package/lib/tr-grid-row-dragging/es6/RowDragging.js +120 -121
  57. package/lib/tr-grid-util/es6/CellPainter.js +94 -104
  58. package/lib/tr-grid-util/es6/Conflator.js +4 -4
  59. package/lib/tr-grid-util/es6/CoralItems.js +6 -6
  60. package/lib/tr-grid-util/es6/DateTime.js +41 -41
  61. package/lib/tr-grid-util/es6/Deferred.js +5 -5
  62. package/lib/tr-grid-util/es6/Delay.d.ts +3 -3
  63. package/lib/tr-grid-util/es6/Delay.js +14 -3
  64. package/lib/tr-grid-util/es6/Dom.js +26 -26
  65. package/lib/tr-grid-util/es6/DragUI.js +17 -17
  66. package/lib/tr-grid-util/es6/ElementObserver.js +12 -12
  67. package/lib/tr-grid-util/es6/ElementWrapper.js +2 -2
  68. package/lib/tr-grid-util/es6/ElfDate.js +4 -4
  69. package/lib/tr-grid-util/es6/ElfUtil.js +37 -37
  70. package/lib/tr-grid-util/es6/EventDispatcher.js +12 -12
  71. package/lib/tr-grid-util/es6/ExpanderIcon.js +6 -6
  72. package/lib/tr-grid-util/es6/ExpressionParser.js +43 -43
  73. package/lib/tr-grid-util/es6/Ext.js +6 -6
  74. package/lib/tr-grid-util/es6/FieldFormatter.js +17 -17
  75. package/lib/tr-grid-util/es6/FilterBuilder.js +57 -58
  76. package/lib/tr-grid-util/es6/FilterOperators.d.ts +12 -1
  77. package/lib/tr-grid-util/es6/FilterOperators.js +13 -2
  78. package/lib/tr-grid-util/es6/GridPlugin.js +86 -87
  79. package/lib/tr-grid-util/es6/GroupDefinitions.js +90 -90
  80. package/lib/tr-grid-util/es6/Icon.js +4 -4
  81. package/lib/tr-grid-util/es6/MouseDownTrait.js +6 -6
  82. package/lib/tr-grid-util/es6/MultiTableManager.js +71 -80
  83. package/lib/tr-grid-util/es6/NumberFormatter.js +23 -23
  84. package/lib/tr-grid-util/es6/PercentBar.js +17 -17
  85. package/lib/tr-grid-util/es6/Perf.js +5 -5
  86. package/lib/tr-grid-util/es6/Popup.js +42 -42
  87. package/lib/tr-grid-util/es6/RangeBar.js +5 -5
  88. package/lib/tr-grid-util/es6/RequestQueue.js +5 -5
  89. package/lib/tr-grid-util/es6/RowPainter.js +23 -23
  90. package/lib/tr-grid-util/es6/SubTable.js +94 -94
  91. package/lib/tr-grid-util/es6/Table.js +51 -51
  92. package/lib/tr-grid-util/es6/TextHighlighter.js +52 -52
  93. package/lib/tr-grid-util/es6/TickCodes.js +2 -2
  94. package/lib/tr-grid-util/es6/Timer.js +2 -2
  95. package/lib/tr-grid-util/es6/TouchProxy.js +7 -7
  96. package/lib/tr-grid-util/es6/Util.js +50 -50
  97. package/lib/tr-grid-util/es6/formula/ADCService.js +2 -2
  98. package/lib/tr-grid-util/es6/formula/ADCSubscription.js +19 -19
  99. package/lib/tr-grid-util/es6/formula/AdFinService.js +2 -2
  100. package/lib/tr-grid-util/es6/formula/AdFinSubscription.js +19 -19
  101. package/lib/tr-grid-util/es6/formula/Engine.js +56 -56
  102. package/lib/tr-grid-util/es6/formula/Formula.js +62 -62
  103. package/lib/tr-grid-util/es6/formula/IntervalSubscription.js +3 -3
  104. package/lib/tr-grid-util/es6/formula/Realtime.js +15 -15
  105. package/lib/tr-grid-util/es6/formula/RealtimeService.js +15 -15
  106. package/lib/tr-grid-util/es6/formula/TSIService.js +2 -2
  107. package/lib/tr-grid-util/es6/formula/TSISubscription.js +104 -104
  108. package/lib/tr-grid-util/es6/formula/VariableToken.js +20 -20
  109. package/lib/tr-grid-util/es6/formula/functions/AdFin.js +10 -10
  110. package/lib/tr-grid-util/es6/formula/functions/Excel.js +1 -1
  111. package/lib/tr-grid-util/es6/formula/functions/Info.js +2 -2
  112. package/lib/tr-grid-util/es6/formula/functions/Internal.js +5 -5
  113. package/lib/tr-grid-util/es6/formula/functions/Logic.js +5 -5
  114. package/lib/tr-grid-util/es6/formula/functions/Math.js +46 -46
  115. package/lib/tr-grid-util/es6/formula/functions/Statistics.js +27 -27
  116. package/lib/tr-grid-util/es6/formula/functions/Text.js +19 -19
  117. package/lib/tr-grid-util/es6/index.js +1 -1
  118. package/lib/tr-grid-util/es6/jet/Adc.js +36 -36
  119. package/lib/tr-grid-util/es6/jet/CollectionDict.js +11 -11
  120. package/lib/tr-grid-util/es6/jet/DataGenerator.js +95 -95
  121. package/lib/tr-grid-util/es6/jet/DataSet.js +1 -1
  122. package/lib/tr-grid-util/es6/jet/MockArchive.js +5 -5
  123. package/lib/tr-grid-util/es6/jet/MockJET.js +1 -1
  124. package/lib/tr-grid-util/es6/jet/MockQuotes.js +13 -13
  125. package/lib/tr-grid-util/es6/jet/MockQuotes2.js +100 -100
  126. package/lib/tr-grid-util/es6/jet/MockRTK.js +4 -4
  127. package/lib/tr-grid-util/es6/jet/MockUtil.js +2 -2
  128. package/lib/tr-grid-util/es6/jet/index.js +1 -1
  129. package/lib/tr-grid-util/es6/jet/mockDataAPI.js +15 -15
  130. package/lib/tr-grid-util/es6/locale/translation-de.js +1 -1
  131. package/lib/tr-grid-util/es6/locale/translation-en.js +1 -1
  132. package/lib/tr-grid-util/es6/locale/translation-ja.js +1 -1
  133. package/lib/tr-grid-util/es6/locale/translation-zh-hant.js +1 -1
  134. package/lib/tr-grid-util/es6/locale/translation-zh.js +1 -1
  135. package/lib/tr-grid-util/es6/locale/translation.js +1 -1
  136. package/lib/types/es6/ColumnDragging.d.ts +1 -1
  137. package/lib/types/es6/ColumnGrouping.d.ts +3 -1
  138. package/lib/types/es6/Core/data/DataTable.d.ts +4 -0
  139. package/lib/types/es6/Core/data/DataView.d.ts +2 -0
  140. package/lib/types/es6/Core/data/SegmentCollection.d.ts +2 -0
  141. package/lib/types/es6/Core/index.d.ts +0 -2
  142. package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +2 -1
  143. package/lib/types/es6/RowDragging.d.ts +1 -2
  144. package/lib/versions.json +12 -12
  145. package/package.json +1 -1
  146. package/lib/core/es6/grid/util/ElementFrameWork.d.ts +0 -18
  147. package/lib/core/es6/grid/util/ElementFrameWork.js +0 -227
  148. package/lib/core/es6/grid/util/HttpRequest.d.ts +0 -53
  149. package/lib/core/es6/grid/util/HttpRequest.js +0 -371
  150. package/lib/core/es6/grid/util/PercentBar.d.ts +0 -43
  151. package/lib/core/es6/grid/util/PercentBar.js +0 -390
  152. package/lib/core/es6/grid/util/PercentBarRenderer.d.ts +0 -41
  153. package/lib/core/es6/grid/util/PercentBarRenderer.js +0 -316
  154. package/lib/core/es6/grid/util/RangeBar.d.ts +0 -25
  155. package/lib/core/es6/grid/util/RangeBar.js +0 -255
  156. package/lib/types/es6/Core/grid/util/ElementFrameWork.d.ts +0 -18
  157. package/lib/types/es6/Core/grid/util/HttpRequest.d.ts +0 -53
  158. package/lib/types/es6/Core/grid/util/PercentBar.d.ts +0 -43
  159. package/lib/types/es6/Core/grid/util/PercentBarRenderer.d.ts +0 -41
  160. package/lib/types/es6/Core/grid/util/RangeBar.d.ts +0 -25
@@ -2,7 +2,7 @@
2
2
  * @private
3
3
  * @const
4
4
  */
5
- var OperatorPrecedences = {
5
+ let OperatorPrecedences = {
6
6
  "||": 1,
7
7
  "&&": 2,
8
8
  "<": 3,
@@ -25,7 +25,7 @@ var OperatorPrecedences = {
25
25
  * @private
26
26
  * @const
27
27
  */
28
- var OperatorFunctions = {
28
+ let OperatorFunctions = {
29
29
  "+": function(lhs, rhs){ return lhs + rhs; },
30
30
  "-": function(lhs, rhs){ return lhs - rhs; },
31
31
  "*": function(lhs, rhs){ return lhs * rhs; },
@@ -46,7 +46,7 @@ var OperatorFunctions = {
46
46
  * @private
47
47
  * @const
48
48
  */
49
- var OperandRequirements = {
49
+ let OperandRequirements = {
50
50
  "+": 2,
51
51
  "-": 2,
52
52
  "*": 2,
@@ -71,8 +71,8 @@ var OperandRequirements = {
71
71
  * @param {string=} dataType
72
72
  * @return {number}
73
73
  */
74
- var _addToken = function(ary, value, type, dataType) {
75
- var tok = {
74
+ let _addToken = function(ary, value, type, dataType) {
75
+ let tok = {
76
76
  value: value,
77
77
  type: type
78
78
  };
@@ -92,14 +92,14 @@ var _addToken = function(ary, value, type, dataType) {
92
92
  * @param {Object} obj
93
93
  * @returns {*}
94
94
  */
95
- var _toValue = function(obj) { // eslint-disable-line
95
+ let _toValue = function(obj) { // eslint-disable-line
96
96
  return obj.value;
97
97
  };
98
98
 
99
99
  /** @public
100
100
  * @namespace
101
101
  */
102
- var ExpressionParser = {};
102
+ let ExpressionParser = {};
103
103
  /** @type {Array.<Object>}
104
104
  * @private
105
105
  * @const
@@ -113,7 +113,7 @@ ExpressionParser._tokens = [];
113
113
  * @return {string}
114
114
  */
115
115
  ExpressionParser._withString = function(str) {
116
- var tokId = _addToken(ExpressionParser._tokens,
116
+ let tokId = _addToken(ExpressionParser._tokens,
117
117
  str.substring(1, str.length - 1),
118
118
  "literal",
119
119
  "string"
@@ -126,7 +126,7 @@ ExpressionParser._withString = function(str) {
126
126
  * @return {string}
127
127
  */
128
128
  ExpressionParser._withField = function(field) {
129
- var tokId = _addToken(ExpressionParser._tokens,
129
+ let tokId = _addToken(ExpressionParser._tokens,
130
130
  field,
131
131
  "literal",
132
132
  "variable"
@@ -147,9 +147,9 @@ ExpressionParser._withFieldInBrackets = function(field) {
147
147
  * @return {string}
148
148
  */
149
149
  ExpressionParser._withNegativeNumber = function(numStr) {
150
- var num = +numStr;
150
+ let num = +numStr;
151
151
  if(num === num) {
152
- var tokId = _addToken(ExpressionParser._tokens,
152
+ let tokId = _addToken(ExpressionParser._tokens,
153
153
  num,
154
154
  "literal",
155
155
  "number"
@@ -179,7 +179,7 @@ ExpressionParser._withOperator = function(opStr) {
179
179
  if(opStr == "=" || opStr == "===") {
180
180
  opStr = "==";
181
181
  }
182
- var tokId = _addToken(ExpressionParser._tokens, opStr, "operator");
182
+ let tokId = _addToken(ExpressionParser._tokens, opStr, "operator");
183
183
  return "#" + tokId + "#";
184
184
  }
185
185
  return "";
@@ -190,7 +190,7 @@ ExpressionParser._withOperator = function(opStr) {
190
190
  * @return {string}
191
191
  */
192
192
  ExpressionParser._withParenthesis = function(paStr) {
193
- var tokId = _addToken(ExpressionParser._tokens, paStr, "parenthesis");
193
+ let tokId = _addToken(ExpressionParser._tokens, paStr, "parenthesis");
194
194
  return "#" + tokId + "#";
195
195
  };
196
196
 
@@ -201,14 +201,14 @@ ExpressionParser._withParenthesis = function(paStr) {
201
201
  * @return {boolean} Returns true if there is any error, otherwise returns false (everything is OK)
202
202
  */
203
203
  ExpressionParser._tester = function(ctx) {
204
- var rpn = ctx._rpn;
205
- var inputCount = rpn.length;
206
- var operandCount = 0;
207
- var maxStack = 0;
208
- for(var i = 0; i < inputCount; ++i) {
209
- var tok = rpn[i];
204
+ let rpn = ctx._rpn;
205
+ let inputCount = rpn.length;
206
+ let operandCount = 0;
207
+ let maxStack = 0;
208
+ for(let i = 0; i < inputCount; ++i) {
209
+ let tok = rpn[i];
210
210
  if(tok.type !== "literal") {
211
- var requiredCount = OperandRequirements[tok.value];
211
+ let requiredCount = OperandRequirements[tok.value];
212
212
  if(operandCount >= requiredCount) {
213
213
  operandCount -= requiredCount;
214
214
  } else {
@@ -236,14 +236,14 @@ ExpressionParser._tester = function(ctx) {
236
236
  * @return {boolean}
237
237
  */
238
238
  ExpressionParser._filter = function(ctx, rowData) {
239
- var rpn = ctx._rpn;
240
- var results = new Array(ctx._stackSize);
241
- var inputCount = rpn.length;
242
- var operandCount = 0;
243
- var curRes;
244
- for(var i = 0; i < inputCount; ++i) {
245
- var tok = rpn[i];
246
- var tokValue = tok.value;
239
+ let rpn = ctx._rpn;
240
+ let results = new Array(ctx._stackSize);
241
+ let inputCount = rpn.length;
242
+ let operandCount = 0;
243
+ let curRes;
244
+ for(let i = 0; i < inputCount; ++i) {
245
+ let tok = rpn[i];
246
+ let tokValue = tok.value;
247
247
  if(tok.type === "literal") {
248
248
  if(tok.dataType !== "variable") {
249
249
  curRes = tokValue;
@@ -287,7 +287,7 @@ ExpressionParser.parse = function(expression) {
287
287
  return null;
288
288
  }
289
289
 
290
- var tokExp = expression.trim();
290
+ let tokExp = expression.trim();
291
291
  if(!tokExp) {
292
292
  return null;
293
293
  }
@@ -302,23 +302,23 @@ ExpressionParser.parse = function(expression) {
302
302
  tokExp = tokExp.replace(/[\-\/+*%!=<>&|]+/g, ExpressionParser._withOperator);
303
303
  tokExp = tokExp.replace(/[()]/g, ExpressionParser._withParenthesis); // round brackets
304
304
 
305
- var tokens = ExpressionParser._tokens;
306
- var tokCount = tokens.length;
305
+ let tokens = ExpressionParser._tokens;
306
+ let tokCount = tokens.length;
307
307
  if(!tokCount) {
308
308
  return null; // There is no recognizable character
309
309
  }
310
310
 
311
311
  // Generate infix token list
312
- var infixTokens = [];
313
- var matches = tokExp.match(/#[0-9]+#/g);
314
- var i, tok, tokType;
312
+ let infixTokens = [];
313
+ let matches = tokExp.match(/#[0-9]+#/g);
314
+ let i, tok, tokType;
315
315
  for(i = 0; i < tokCount; ++i) {
316
- var tokId = matches[i];
317
- var tokIdx = +(tokId.substring(1, tokId.length - 1));
316
+ let tokId = matches[i];
317
+ let tokIdx = +(tokId.substring(1, tokId.length - 1));
318
318
  tok = tokens[tokIdx];
319
319
  tokType = tok.type;
320
320
  if(tokType === "literal") {
321
- var prevTok = infixTokens[infixTokens.length - 1];
321
+ let prevTok = infixTokens[infixTokens.length - 1];
322
322
  if(prevTok && prevTok.type === "literal") { // Incorrect infix notation detected
323
323
  if(tok.value < 0 && tok.dataType === "number") {
324
324
  _addToken(infixTokens, "-", "operator");
@@ -336,10 +336,10 @@ ExpressionParser.parse = function(expression) {
336
336
  // Convert Infix notation to Reverse Polish Notation (Postfix)
337
337
  // See https://en.wikipedia.org/wiki/Shunting_yard_algorithm#The_algorithm_in_detail
338
338
  tokCount = infixTokens.length;
339
- var rpn = [];
340
- var operators = [];
341
- var lastOp = null;
342
- var foundLeftPa = false;
339
+ let rpn = [];
340
+ let operators = [];
341
+ let lastOp = null;
342
+ let foundLeftPa = false;
343
343
  for(i = 0; i < tokCount; ++i) {
344
344
  tok = infixTokens[i];
345
345
  tokType = tok.type;
@@ -388,12 +388,12 @@ ExpressionParser.parse = function(expression) {
388
388
  console.warn("No right parenthesis paired with the left one");
389
389
  }
390
390
 
391
- var inputCount = rpn.length;
391
+ let inputCount = rpn.length;
392
392
  if(!inputCount) {
393
393
  return null; // The expression contains nothing but parentheses
394
394
  }
395
395
 
396
- var ctx = {
396
+ let ctx = {
397
397
  _rpn: rpn
398
398
  };
399
399
 
@@ -1,15 +1,15 @@
1
1
  /** Provide ability for prototype based Class to inherits another class
2
2
  * @namespace
3
3
  * @example
4
- * var BaseClass = function() {};
4
+ * let BaseClass = function() {};
5
5
  * BaseClass.prototype.method = function() {};
6
6
  * BaseClass.prototype._member = 1;
7
- * var DerivedClass = function() {};
7
+ * let DerivedClass = function() {};
8
8
  * Ext.inherits(DerivedClass, BaseClass); // Derived class will have methods and members of the base class
9
9
  * // To call base class method
10
10
  * DeriveClass["base"](this, "methodName", ...params);
11
11
  */
12
- var Ext = {};
12
+ let Ext = {};
13
13
 
14
14
  /** @public
15
15
  * @function
@@ -39,9 +39,9 @@ Ext.inherits = function (childCtor, parentCtor) {
39
39
  childCtor["base"] = function(me, methodName, var_args) {
40
40
  if(!methodName) { methodName = 'constructor'; }
41
41
  // Copying using loop to avoid deop due to passing arguments object to function. This is faster in many JS engines as of late 2014.
42
- var len = arguments.length;
43
- var args = new Array(len); // http://jsperf.com/creating-an-array
44
- for (var i = 2; i < len; i++) {
42
+ let len = arguments.length;
43
+ let args = new Array(len); // http://jsperf.com/creating-an-array
44
+ for (let i = 2; i < len; i++) {
45
45
  args[i - 2] = arguments[i];
46
46
  }
47
47
  return parentCtor.prototype[methodName].apply(me, args);
@@ -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,25 @@ 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
+ for(let i = 0; i < condCount; ++i) {
139
+ let orConnector = 0;
141
140
  if(i > 0) {
142
141
  orConnector = connectorMap[conds[i - 1].connector];
143
142
  // TODO: AND operator has higher precedence than OR operator
@@ -150,13 +149,13 @@ var _filterByConditions = function(ctx, rowData) {
150
149
  }
151
150
  }
152
151
 
153
- var cond = conds[i];
154
- var opDef = FilterOperators[cond.operatorId];
155
- result = false;
152
+ let cond = conds[i];
153
+ let opDef = FilterOperators[cond.operatorId];
154
+ let result = false;
156
155
 
157
- var opType = opDef.type;
158
- var opId = opDef.id;
159
- var opFunc = OperatorFunctions[opId];
156
+ let opType = opDef.type;
157
+ let opId = opDef.id;
158
+ let opFunc = OperatorFunctions[opId];
160
159
  if(opType === "blank") {
161
160
  result = opFunc(val);
162
161
  } else if(opType === "number") {
@@ -215,8 +214,8 @@ var _filterByConditions = function(ctx, rowData) {
215
214
  * @param {Object} rowData
216
215
  * @return {boolean}
217
216
  */
218
- var _filterByObjectMap = function(ctx, rowData) {
219
- var val = rowData[ctx._fieldName];
217
+ let _filterByObjectMap = function(ctx, rowData) {
218
+ let val = rowData[ctx._fieldName];
220
219
  if(ctx._rawDataAccessor) {
221
220
  val = ctx._rawDataAccessor(val);
222
221
  }
@@ -229,7 +228,7 @@ var _filterByObjectMap = function(ctx, rowData) {
229
228
  * @param {Object} cond Internal condition object
230
229
  * @return {FilterBuilder~Condition}
231
230
  */
232
- var conditionToArray = function(cond) {
231
+ let conditionToArray = function(cond) {
233
232
  return [
234
233
  cond.operatorId,
235
234
  cond.origValue,
@@ -241,7 +240,7 @@ var conditionToArray = function(cond) {
241
240
  * @constructor
242
241
  * @param {FilterBuilder~Options=} options
243
242
  */
244
- var FilterBuilder = function (options) {
243
+ let FilterBuilder = function (options) {
245
244
  this._initStaticVariables();
246
245
 
247
246
  this._conditions = [];
@@ -255,7 +254,7 @@ FilterBuilder.prototype._initStaticVariables = function() {
255
254
  FilterBuilder._initStatic = true;
256
255
 
257
256
  FilterBuilder._updateTimezoneOffset();
258
- var timeUntilNextDay = 86400000 - (new Date() % 86400000);
257
+ let timeUntilNextDay = 86400000 - (new Date() % 86400000);
259
258
  setTimeout(FilterBuilder._setUpdateInterval, timeUntilNextDay);
260
259
  }
261
260
  };
@@ -328,20 +327,20 @@ FilterBuilder.prototype.init = function(options) {
328
327
  if(!options) {
329
328
  return;
330
329
  }
331
- var field = options["field"];
330
+ let field = options["field"];
332
331
  if(field) {
333
332
  this.setFieldDefinition(field, options["formatter"], options["formattedField"]);
334
333
  } else if(field != null) {
335
334
  this.setFieldDefinition("");
336
335
  }
337
336
 
338
- var useUTCTime = options["useUTCTime"];
337
+ let useUTCTime = options["useUTCTime"];
339
338
  if(useUTCTime != null) {
340
339
  this._useUTCTime = useUTCTime ? true : false;
341
340
  }
342
341
 
343
- var rawDataAccessor = options["rawDataAccessor"];
344
- var formattedDataAccessor = options["formattedDataAccessor"];
342
+ let rawDataAccessor = options["rawDataAccessor"];
343
+ let formattedDataAccessor = options["formattedDataAccessor"];
345
344
  if(rawDataAccessor != null || formattedDataAccessor != null) {
346
345
  this.setDataAccessors(rawDataAccessor, formattedDataAccessor);
347
346
  }
@@ -381,8 +380,8 @@ FilterBuilder.prototype.setDataAccessors = function(rawDataAccessor, formattedDa
381
380
  * @return {boolean} Return true, if the new condition is added
382
381
  */
383
382
  FilterBuilder.prototype.addCondition = function (oper, value, connector, useUTCTime) {
384
- var opId = oper ? oper.toUpperCase() : "";
385
- var opDef = FilterOperators[opId];
383
+ let opId = oper ? oper.toUpperCase() : "";
384
+ let opDef = FilterOperators[opId];
386
385
  if (!opDef) {
387
386
  return false; // Unknown operation
388
387
  }
@@ -395,7 +394,7 @@ FilterBuilder.prototype.addCondition = function (oper, value, connector, useUTCT
395
394
  return false; // Invalid comparer value ("", null, undefined, NaN)
396
395
  }
397
396
  }
398
- var cond = {
397
+ let cond = {
399
398
  operatorId: opId,
400
399
  origValue: value,
401
400
  connector: connector || ""
@@ -412,11 +411,11 @@ FilterBuilder.prototype.addCondition = function (oper, value, connector, useUTCT
412
411
  * @return {number} Return number of conditions being added.
413
412
  */
414
413
  FilterBuilder.prototype.addConditions = function (conditions) {
415
- var count = 0;
414
+ let count = 0;
416
415
  if(Array.isArray(conditions)) {
417
- var len = conditions.length;
418
- for(var i = 0; i < len; ++i) {
419
- var condition = conditions[i];
416
+ let len = conditions.length;
417
+ for(let i = 0; i < len; ++i) {
418
+ let condition = conditions[i];
420
419
  if(Array.isArray(condition)) {
421
420
  if(this.addCondition(condition[0], condition[1], condition[2], condition[3])) {
422
421
  ++count;
@@ -449,25 +448,25 @@ FilterBuilder.prototype.buildFilter = function() {
449
448
  if (!this._fieldName) {
450
449
  return null;
451
450
  }
452
- var condCount = this._conditions.length;
451
+ let condCount = this._conditions.length;
453
452
  if(!condCount) {
454
453
  return null;
455
454
  }
456
455
 
457
456
  // 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;
457
+ let formatter = this._formatter;
458
+ let conds = this._conditions.slice();
459
+ for(let i = 0; i < condCount; ++i) {
460
+ let cond = conds[i];
461
+ let opDef = FilterOperators[cond.operatorId];
462
+ let opType = opDef.type;
463
+ let value = cond.origValue;
465
464
 
466
465
  if(opType === "number") {
467
466
  value = stringToDateObject(value);
468
467
  value = convertToNumber(value);
469
468
  } else if(opType === "date") {
470
- var dateObj = null;
469
+ let dateObj = null;
471
470
  if(value instanceof Date) {
472
471
  dateObj = value;
473
472
  } else if(typeof value === "number" || typeof value === "string") {
@@ -487,7 +486,7 @@ FilterBuilder.prototype.buildFilter = function() {
487
486
  cond.value = value;
488
487
  }
489
488
 
490
- var ctx = {
489
+ let ctx = {
491
490
  _conds: conds,
492
491
  _fieldName: this._fieldName || "",
493
492
  _formatter: formatter || null,
@@ -510,11 +509,11 @@ FilterBuilder.prototype.buildFilter = function() {
510
509
  */
511
510
  FilterBuilder.prototype.buildMonitorFilter = function(filterStr, field, formatter, formattedField) {
512
511
  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)
512
+ let needConvertValue = (field.lastIndexOf("_LOCAL") === field.length - 6); // _LOCAL field is special monitor field which convert time value to local timezone (idn)
514
513
 
515
- var conds = filterStr.split("♣");
516
- for (var i = 0; i < conds.length; i++) {
517
- var tokens = conds[i].split("♦");
514
+ let conds = filterStr.split("♣");
515
+ for (let i = 0; i < conds.length; i++) {
516
+ let tokens = conds[i].split("♦");
518
517
  if(needConvertValue) {
519
518
  tokens[1] = ((tokens[1] - FilterBuilder._timezoneOffset) % 86400) + ""; // Convert to local timezone value for range filtering
520
519
  }
@@ -530,11 +529,11 @@ FilterBuilder.prototype.buildMonitorFilter = function(filterStr, field, formatte
530
529
  * @param {Function=} rawDataAccessor Raw data getter for custom data type
531
530
  * @return {Function}
532
531
  */
533
- var buildFilterFromObjectMap = function(obj, field, rawDataAccessor) {
532
+ let buildFilterFromObjectMap = function(obj, field, rawDataAccessor) {
534
533
  if(!obj || !field) {
535
534
  return null;
536
535
  }
537
- var ctx = {
536
+ let ctx = {
538
537
  _fieldName: field,
539
538
  _itemMap: obj
540
539
  };
@@ -555,7 +554,7 @@ var buildFilterFromObjectMap = function(obj, field, rawDataAccessor) {
555
554
  * @return {Function} Filter function that takes rowData object
556
555
  */
557
556
  FilterBuilder.prototype.parse = function(condition, field, formatter, formattedField, rawDataAccessor, formattedDataAccessor) {
558
- var type = typeof(condition);
557
+ let type = typeof(condition);
559
558
  if(type === "string") {
560
559
  if(condition.indexOf("♦") >= 0) {
561
560
  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
  }