@refinitiv-ui/efx-grid 6.0.65 → 6.0.66

Sign up to get free protection for your applications and to get access to all the features.
@@ -54,8 +54,6 @@ declare class ColumnDefinition {
54
54
 
55
55
  public dispose(): void;
56
56
 
57
- public _initializeTimeSeriesChild(columnOption?: ColumnDefinition.Options|string|null): void;
58
-
59
57
  public initialize(columnOption?: ColumnDefinition.Options|null): void;
60
58
 
61
59
  public getId(): string;
@@ -276,7 +276,7 @@ ColumnDefinition.prototype.dispose = function() {
276
276
  // TODO: Remove any related reference from this._fnEngine
277
277
  };
278
278
 
279
- /** @public
279
+ /** @private
280
280
  * @param {ColumnDefinition~Options|string=} columnOption
281
281
  */
282
282
  ColumnDefinition.prototype._initializeTimeSeriesChild = function(columnOption) {
@@ -179,8 +179,6 @@ declare class Grid extends EventDispatcher {
179
179
 
180
180
  public setColumnSorter(colRef: Grid.ColumnReference|null, func?: ColumnDefinition.SortLogic|null): void;
181
181
 
182
- public _initDuplicateRicData(rowDef: RowDefinition|null): void;
183
-
184
182
  public insertRow(rowOption?: (RowDefinition.Options|string)|null, rowRef?: Grid.RowReference|null): RowDefinition|null;
185
183
 
186
184
  public insertRows(rowOptions: (RowDefinition.Options|string)[]|null, rowRef?: Grid.RowReference|null, opt_fields?: (string)[]|null): void;
@@ -1544,7 +1544,7 @@ Grid.prototype.replaceColumn = function (columnOption, colRef) {
1544
1544
  colConfig["minWidth"] = value;
1545
1545
  }
1546
1546
 
1547
- value = core.isColumnVisible(colIndex);
1547
+ value = core.getColumnVisibility(colIndex, 0); // flag 0 means get only core api hidden state
1548
1548
  if(!value) {
1549
1549
  colConfig["hidden"] = true;
1550
1550
  }
@@ -2284,7 +2284,7 @@ Grid.prototype.setColumnSorter = function(colRef, func) {
2284
2284
 
2285
2285
 
2286
2286
  /** Initialize data for the given rowDef from another rowDef with the same RIC
2287
- * @public
2287
+ * @private
2288
2288
  * @param {RowDefinition} rowDef
2289
2289
  */
2290
2290
  Grid.prototype._initDuplicateRicData = function(rowDef) {
@@ -557,7 +557,7 @@ ColumnFormattingPlugin.prototype.getColumnAlignment = function(colIndex) {
557
557
  }
558
558
  return "default";
559
559
  };
560
- /** Return true if at lease one column is hidden
560
+ /** Return true if at lease one column is hidden. If grid contains only columns hidden by stacking this will return false
561
561
  * @public
562
562
  * @return {boolean}
563
563
  */
@@ -570,7 +570,7 @@ ColumnFormattingPlugin.prototype.hasHiddenColumn = function() {
570
570
  }
571
571
  return false;
572
572
  };
573
- /** Check if the specified column is hidden
573
+ /** Check if the specified column is hidden. Column hidden by stacking is not considered as hidden column.
574
574
  * @public
575
575
  * @param {number} colIndex
576
576
  * @return {boolean}
@@ -578,7 +578,8 @@ ColumnFormattingPlugin.prototype.hasHiddenColumn = function() {
578
578
  ColumnFormattingPlugin.prototype.isColumnHidden = function(colIndex) {
579
579
  var grid = this._hosts[0];
580
580
  if(grid) {
581
- return !grid.isColumnVisible(colIndex);
581
+ var visible = grid.getColumnVisibility(colIndex, 0);
582
+ return !visible;
582
583
  }
583
584
  return false;
584
585
  };
@@ -142,7 +142,7 @@ declare class ColumnStackPlugin extends GridPlugin {
142
142
 
143
143
  public moveColumnById(srcCol: number|string|null, destCol?: (number|string)|null): boolean;
144
144
 
145
- public hideStack(stackId: string): void;
145
+ public hideStack(stackId: string, hidden?: boolean|null): void;
146
146
 
147
147
  public showStack(stackId: string): void;
148
148
 
@@ -1981,29 +1981,6 @@ ColumnStackPlugin.prototype.moveColumnById = function(srcCol, destCol) {
1981
1981
  return this._moveColumnById(srcCol, destCol);
1982
1982
  };
1983
1983
 
1984
- /** @private
1985
- * @description Set stack visibility to the specific stack
1986
- * @param {string} stackId
1987
- * @param {boolean} visible
1988
- */
1989
- ColumnStackPlugin.prototype._setStackVisibility = function(stackId, visible) {
1990
- var stackOption = this._groupDefs.getGroup(stackId);
1991
- if(!stackOption){
1992
- return;
1993
- }
1994
-
1995
- if(stackOption.spreading && !stackOption.collapsed){
1996
- var children = stackOption.children;
1997
- for(var i = 0; i < children.length; i++){
1998
- this._setColumnVisibility(this.getColumnIndex(children[i]), visible);
1999
- }
2000
- } else {
2001
- var activeColIndex = this.getColumnIndex(stackOption.activeColumn);
2002
- this._setColumnVisibility(activeColIndex, visible);
2003
- }
2004
- };
2005
-
2006
-
2007
1984
  /** @private
2008
1985
  * @description Check for active column in a stack if it needs an update.
2009
1986
  * @param {Object} stackOpt
@@ -2022,12 +1999,26 @@ ColumnStackPlugin.prototype._updateActiveColumn = function(stackOpt) {
2022
1999
  /** @public
2023
2000
  * @description Hide specific stack from grid
2024
2001
  * @param {string} stackId
2002
+ * @param {boolean=} hidden
2025
2003
  */
2026
- ColumnStackPlugin.prototype.hideStack = function(stackId) {
2004
+ ColumnStackPlugin.prototype.hideStack = function(stackId, hidden) {
2027
2005
  if(!stackId){
2028
2006
  return;
2029
2007
  }
2030
- this._setStackVisibility(stackId, false);
2008
+ var stackOption = this._groupDefs.getGroup(stackId);
2009
+ if(!stackOption){
2010
+ return;
2011
+ }
2012
+
2013
+ if(hidden == null){
2014
+ hidden = true;
2015
+ }
2016
+ var children = stackOption.children;
2017
+ for(var i = 0; i < children.length; i++){
2018
+ for(var g = this._hosts.length; --g >= 0;) {
2019
+ this._hosts[g].hideColumn(this.getColumnIndex(children[i]), hidden);
2020
+ }
2021
+ }
2031
2022
  };
2032
2023
 
2033
2024
  /** @public
@@ -2038,7 +2029,7 @@ ColumnStackPlugin.prototype.showStack = function(stackId) {
2038
2029
  if(!stackId){
2039
2030
  return;
2040
2031
  }
2041
- this._setStackVisibility(stackId, true);
2032
+ this.hideStack(stackId, false);
2042
2033
  };
2043
2034
 
2044
2035
  /** @public
@@ -8,7 +8,8 @@ import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
8
8
  declare namespace ConditionalColoringPlugin {
9
9
 
10
10
  type Options = {
11
- predefinedColors?: any
11
+ predefinedColors?: any,
12
+ blinkingDuration?: number|null
12
13
  };
13
14
 
14
15
  type ColumnOptions = {
@@ -27,10 +28,11 @@ declare namespace ConditionalColoringPlugin {
27
28
  };
28
29
 
29
30
  type Condition = {
30
- expression?: (string|((...params: any[]) => any))|null,
31
+ expression?: (string|((...params: any[]) => any)|any[])|null,
31
32
  backgroundColor?: string|null,
32
33
  color?: string|null,
33
- cssClass?: string|null
34
+ cssClass?: string|null,
35
+ field?: string|null
34
36
  };
35
37
 
36
38
  type Blinking = {
@@ -38,7 +40,8 @@ declare namespace ConditionalColoringPlugin {
38
40
  field?: string|null,
39
41
  up?: string|null,
40
42
  down?: string|null,
41
- level?: (string|boolean)|null
43
+ level?: (string|boolean)|null,
44
+ duration?: number|null
42
45
  };
43
46
 
44
47
  type ColorText = {
@@ -70,7 +73,7 @@ declare class ConditionalColoringPlugin extends GridPlugin {
70
73
 
71
74
  public setColumnColoring(colIndex: number, columnOptions?: (ConditionalColoringPlugin.ColumnOptions|null)|null): void;
72
75
 
73
- public setConditionalColoring(colIndex: number, coloringOptions?: (ConditionalColoringPlugin.ConditionalColoringOptions|null)|null): void;
76
+ public setConditionalColoring(colIndex: number, coloringOptions?: ConditionalColoringPlugin.ConditionalColoringOptions|null): void;
74
77
 
75
78
  public setColumnBlinking(colIndex: number, blinkingOptions?: (boolean|ConditionalColoringPlugin.Blinking)|null, field?: string|null): void;
76
79
 
@@ -8,31 +8,49 @@ import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
8
8
  /** @typedef {Object} ConditionalColoringPlugin~Options
9
9
  * @description The options can be specified by `conditionalColoring` property of the main grid's options
10
10
  * @property {Object=} predefinedColors Predefined color object map for conditional coloring
11
+ * @property {number=} blinkingDuration=250 Blinking duration in milliseconds
11
12
  */
12
13
 
13
14
  /** @typedef {Object} ConditionalColoringPlugin~ColumnOptions
14
- * @description Extension column options that can be specified on each individual grid's column option:
15
+ * @description Extension column options that can be specified on each Grid column configuration object
15
16
  * @property {Array.<ConditionalColoringPlugin~Condition>=} conditions=null List of condition options
16
17
  * @property {(string|boolean|ConditionalColoringPlugin~ColorText)=} colorText=null A shorthand for specifying default condition based on the field.
17
18
  * @property {(string|boolean|ConditionalColoringPlugin~ColorText)=} tickColor=null Alias of colorText.
18
19
  * @property {(string|boolean|ConditionalColoringPlugin~Blinking)=} blinking=null Blink Options. If specified, the cell will be blinked on data change.
19
- * @property {string=} field
20
+ * @property {string=} field Field for Grid column configuration object
20
21
  */
21
22
 
22
23
  /** @typedef {Object} ConditionalColoringPlugin~ConditionalColoringOptions
23
- * @description Extension column options that can be specified on each individual grid's column option:
24
+ * @description Available options for changing conditional coloring at runtime
24
25
  * @property {Array.<ConditionalColoringPlugin~Condition>=} conditions=null List of condition options
25
26
  * @property {(string|boolean|ConditionalColoringPlugin~ColorText)=} colorText=null A shorthand for specifying default condition based on the field.
26
- * @property {(string|boolean|ConditionalColoringPlugin~ColorText)=} tickColor=null Alias of colorText.
27
- * @property {string=} field
27
+ * @property {(string|boolean|ConditionalColoringPlugin~ColorText)=} tickColor=null Alias of colorText
28
+ * @property {string=} field Field to be used for all conditions, overriding the field defined in ColumnOptions
28
29
  */
29
30
 
30
31
  /** @typedef {Object} ConditionalColoringPlugin~Condition
31
- * @description Available options describing `condition` object
32
- * @property {(string|Function)=} expression Expression could be `[FIELD_1] > 0`
32
+ * @description Properties defining colors and conditioning
33
+ * @property {(string|Function|Array)=} expression The expression can be in the following forms: text, function, and 2 dimentional array
33
34
  * @property {string=} backgroundColor="" CSS color (e.g. #ffffff, black)
34
35
  * @property {string=} color CSS="" color (e.g. #000000, white)
35
36
  * @property {string=} cssClass cssClass="" Predefined color class name
37
+ * @property {string=} field Field to be used for this specific condition, overriding the field defined in ConditionalColoringOptions
38
+ * @example
39
+ * var conditions1 = [ // Add cssClass for any value that is greater than or equal to 10, and less than or equal to 20
40
+ * {expression: [["GTE", 10, "AND"], ["LTE", 20]], cssClass: "predefinedColors"}
41
+ * ];
42
+ * var conditions2 = [ // Add background color for any fieldA value that is not blank value (e.g., null, undefined, 0, false, empty string)
43
+ * {
44
+ * expression: function(rowData) {
45
+ * return rowData["fieldA"] ? true : false;
46
+ * },
47
+ * backgroundColor: "blue",
48
+ * field: "fieldA"
49
+ * }
50
+ * ];
51
+ * var conditions3 = [ // Add text color for any fieldA value that is not equal to 10
52
+ * {expression: "[fieldA] != 10", color: "red"}
53
+ * ];
36
54
  */
37
55
 
38
56
  /** @typedef {(string|boolean|Object)} ConditionalColoringPlugin~Blinking
@@ -43,6 +61,7 @@ import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
43
61
  * @property {string=} up CSS color (e.g. #00ff00, green)
44
62
  * @property {string=} down CSS color (e.g. #ff0000, red)
45
63
  * @property {(string|boolean)=} level CSS color (e.g. #33333, grey). If false value is specified, blinking for level color is disabled.
64
+ * @property {number=} duration If specified, this will override blinking duration from extension option. Blinking duration in milliseconds
46
65
  */
47
66
 
48
67
  /** @typedef {(string|boolean|Object)} ConditionalColoringPlugin~ColorText
@@ -126,6 +145,10 @@ ConditionalColoringPlugin.prototype._pendingFields;
126
145
  * @private
127
146
  */
128
147
  ConditionalColoringPlugin.prototype._predefinedColors = null;
148
+ /** @type {number}
149
+ * @private
150
+ */
151
+ ConditionalColoringPlugin.prototype._blinkingDuration = 250;
129
152
  /** @type {string}
130
153
  * @private
131
154
  */
@@ -171,6 +194,10 @@ ConditionalColoringPlugin.prototype.initialize = function (host, options) {
171
194
  this._injectPredefinedColors(host);
172
195
  host.enableClass(ConditionalColoringPlugin._controlClass);
173
196
  }
197
+ var blinkingDuration = extOptions["blinkingDuration"];
198
+ if(blinkingDuration != null && typeof blinkingDuration === "number"){
199
+ this._blinkingDuration = blinkingDuration;
200
+ }
174
201
  }
175
202
 
176
203
  if(hosts.length === 1) {
@@ -303,15 +330,24 @@ ConditionalColoringPlugin.prototype.getColumnColoring = function(colIndex, optio
303
330
  if (Array.isArray(conditions) && conditions.length > 0) {
304
331
  options.conditions = [];
305
332
 
333
+ var returnedFields = [
334
+ "expression",
335
+ "backgroundColor",
336
+ "color",
337
+ "cssClass",
338
+ "field"
339
+ ];
306
340
  var count = conditions.length;
307
341
  for (var n = 0; n < count; n++) {
308
342
  var exCondition = {};
309
- extendObject(exCondition, conditions[n], [
310
- "expression",
311
- "backgroundColor",
312
- "color",
313
- "cssClass"
314
- ]);
343
+ var cond = conditions[n];
344
+ extendObject(exCondition, cond, returnedFields);
345
+ if(typeof exCondition["expression"] === "function") {
346
+ var origExp = cond["origExpression"];
347
+ if(origExp) {
348
+ exCondition["expression"] = origExp;
349
+ }
350
+ }
315
351
 
316
352
  options.conditions.push(exCondition);
317
353
  }
@@ -555,18 +591,18 @@ ConditionalColoringPlugin.prototype.setColumnColoring = function (colIndex, colu
555
591
 
556
592
  /** @public
557
593
  * @param {number} colIndex
558
- * @param {(ConditionalColoringPlugin~ConditionalColoringOptions|null)=} coloringOptions
594
+ * @param {ConditionalColoringPlugin~ConditionalColoringOptions=} coloringOptions
559
595
  */
560
596
  ConditionalColoringPlugin.prototype.setConditionalColoring = function (colIndex, coloringOptions) {
561
597
  var colData = this._newColumnData(colIndex);
598
+
599
+ colData["conditions"] = null; // WARNING: This clears existing user states
562
600
  if(coloringOptions) {
563
601
  // Save column config state
564
- colData["conditions"] = coloringOptions["conditions"];
565
602
  colData["colorText"] = coloringOptions["colorText"];
566
603
  colData["tickColor"] = coloringOptions["tickColor"];
567
604
  colData["field"] = coloringOptions["field"];
568
605
  } else {
569
- colData["conditions"] = null;
570
606
  colData["colorText"] = null;
571
607
  colData["tickColor"] = null;
572
608
  }
@@ -583,6 +619,7 @@ ConditionalColoringPlugin.prototype.setConditionalColoring = function (colIndex,
583
619
  }
584
620
 
585
621
  if(colorOptions.hasColor) { // Set new coloring
622
+ colData["conditions"] = coloringOptions["conditions"]; // WARNING: This stores user object
586
623
  var newFieldsMap = colorOptions.fields;
587
624
  if (!painter) {
588
625
  painter = colData["painter"] = new CellPainter();
@@ -685,6 +722,8 @@ ConditionalColoringPlugin.prototype.setColumnBlinking = function (colIndex, blin
685
722
  this._removeDataFields(prevField, colIndex, BLINKING_TYPE);
686
723
  }
687
724
  }
725
+ var blinkDuration = bOptions.duration || this._blinkingDuration;
726
+ painter.setBlinkingDuration(blinkDuration);
688
727
  painter.disableLevelColor(bOptions.level === false);
689
728
  if (bOptions.customColor) {
690
729
  painter.addBlink(newBlinkingField, bOptions.up, bOptions.down, bOptions.level, bOptions.border);
@@ -774,6 +813,7 @@ ConditionalColoringPlugin.prototype._prepareBlinkingOptions = function (colIndex
774
813
  } else if(typeof blinkingOptions === "object") {
775
814
  blinkField = /** @type{string} */(blinkingOptions["field"]) || field;
776
815
  bOptions.border = blinkingOptions["border"];
816
+ bOptions.duration = blinkingOptions["duration"];
777
817
  if (blinkingOptions["up"] || blinkingOptions["down"] || blinkingOptions["level"]) {
778
818
  bOptions.customColor = true;
779
819
  bOptions.up = blinkingOptions["up"];
@@ -784,52 +824,81 @@ ConditionalColoringPlugin.prototype._prepareBlinkingOptions = function (colIndex
784
824
  bOptions.level = false;
785
825
  }
786
826
  }
787
-
788
827
  bOptions.field = ConditionalColoringPlugin._convertKeyword(blinkField, field);
789
828
  bOptions.inputField = blinkField;
790
829
  return bOptions;
791
830
  };
792
831
 
832
+ /** @private
833
+ * @param {Object} obj
834
+ * @param {Array|string} entries
835
+ */
836
+ var _addMapEntries = function(obj, entries) {
837
+ if(entries) {
838
+ if(Array.isArray(entries)) {
839
+ var len = entries.length;
840
+ for(var i = 0; i < len; ++i) {
841
+ obj[entries[i]] = true;
842
+ }
843
+ } else {
844
+ obj[entries] = true;
845
+ }
846
+ }
847
+ };
793
848
  /** @private
794
849
  * @param {number} colIndex
795
850
  * @param {ConditionalColoringPlugin~ColumnOptions} columnOptions
796
851
  * @return {!Object}
797
852
  */
798
853
  ConditionalColoringPlugin.prototype._prepareColorOptions = function(colIndex, columnOptions) {
799
- var colorOptions = {};
800
854
  if(!columnOptions) {
801
- return colorOptions;
855
+ return {};
802
856
  }
803
857
  var colField = this._getField(colIndex);
804
- var field = /** @type{string} */(columnOptions["field"]) || colField;
805
858
  var inputField = columnOptions["inputField"] || ""; // The value is from user so it can be "THIS_COLUMN" or null
806
- colorOptions["inputField"] = inputField; // Used to retain state on Column Format Dialog
807
- field = ConditionalColoringPlugin._convertKeyword(inputField, field);
859
+ var field = ConditionalColoringPlugin._convertKeyword(inputField, colField);
860
+ if(columnOptions["field"]) {
861
+ field = /** @type{string} */(columnOptions["field"]);
862
+ }
863
+
864
+ var hasColor = 0;
865
+ var fieldMap = {};
808
866
 
809
867
  // Check if there is another type of coloring
810
- // "colorText" option has more priority than "tickColor"
811
868
  var colorText = columnOptions["colorText"] || columnOptions["tickColor"];
812
869
  var conditions = columnOptions["conditions"];
813
870
  var conditionCount = conditions ? conditions.length : 0;
871
+ var colorOptions = {};
814
872
  if(conditionCount) {
815
- colorOptions.hasColor = 1;
816
- colorOptions.fields = {};
817
873
  colorOptions.condColoring = {};
818
874
  colorOptions.condColoring.conditions = conditions;
819
875
 
820
- var formatter = (field == colField) ? columnOptions["textFormatter"] : null;
876
+ var formatter = (field == colField) ? columnOptions["textFormatter"] : null; // TODO: This text formatter is not used or defined any where
821
877
  var builder = ConditionalColoringPlugin.getFilterBuilder();
822
878
 
823
- // WARNING: Builder has to have field first
824
- builder.setFieldDefinition(field, formatter, field);
825
-
826
879
  for(var i = conditionCount; --i >= 0;) {
827
880
  var cond = conditions[i];
828
- var exp = cond["expression"];
829
- if(!exp && field) { // Build Expression from condition
830
- var oper = cond["condition"];
881
+ var exp = cond ? cond["expression"] : null;
882
+ if(Array.isArray(exp)) {
883
+ var fieldPerCon = cond["field"] || field;
884
+ cond["expression"] = builder.parse(exp, fieldPerCon, null, fieldPerCon); // WARNING: This alters user object
885
+ if(cond["expression"]) {
886
+ cond["origExpression"] = exp;
887
+ hasColor = 1;
888
+ fieldMap[fieldPerCon] = true;
889
+ }
890
+ } else if(typeof exp === "function") {
891
+ hasColor = 1;
892
+ _addMapEntries(fieldMap, cond["fields"] || cond["field"]);
893
+ } else if(typeof exp === "string") {
894
+ hasColor = 1;
895
+ _addMapEntries(fieldMap, _getFieldsFromExpression(exp));
896
+ } else if(field && cond["condition"]) {
897
+ hasColor = 1;
898
+ builder.setFieldDefinition(field, formatter, field); // TODO: Each condition could have different fields
899
+ var oper = cond["condition"]; // WARNING: This condition is used by Format dialog. It's undocumented
831
900
  var value1 = cond["value1"];
832
- var value2 = cond["value1"];
901
+ var value2 = cond["value2"];
833
902
 
834
903
  if(oper !== "BTW") {
835
904
  builder.addCondition(oper, value1);
@@ -837,26 +906,16 @@ ConditionalColoringPlugin.prototype._prepareColorOptions = function(colIndex, co
837
906
  builder.addCondition("GTE", value1);
838
907
  builder.addCondition("LTE", value2);
839
908
  }
840
- exp = builder.buildFilter();
841
- cond["expression"] = exp;
842
- colorOptions.fields[field] = true;
843
- } else {
844
- // Get fields from expression string
845
- var expFields = _getFieldsFromExpression(exp);
846
- for(var n = 0; n < expFields.length; n++) {
847
- colorOptions.fields[expFields[n]] = true;
848
- }
909
+ cond["expression"] = builder.buildFilter();
910
+ fieldMap[field] = true;
849
911
  }
850
912
  }
851
913
  } else if(colorText) {
852
- colorOptions.hasColor = 1;
853
- colorOptions.fields = {};
854
914
  colorOptions.colorText = {};
855
915
  colorOptions.colorText.useThemeColors = true;
856
- var type = typeof colorText;
857
- if(type === "string") {
916
+ if(typeof colorText === "string") {
858
917
  field = colorText;
859
- } else if(type === "object") {
918
+ } else if(typeof colorText === "object") {
860
919
  field = /** @type{string} */(colorText["field"]) || field;
861
920
 
862
921
  if (colorText["upClass"] || colorText["downClass"] || colorText["levelClass"]) {
@@ -866,11 +925,22 @@ ConditionalColoringPlugin.prototype._prepareColorOptions = function(colIndex, co
866
925
  colorOptions.colorText.levelClass = colorText["levelClass"];
867
926
  }
868
927
  }
869
- colorOptions.colorText.field = field;
870
- colorOptions.fields[field] = true;
928
+
929
+ if(field) {
930
+ colorOptions.colorText.field = field;
931
+ hasColor = 1;
932
+ fieldMap[field] = true;
933
+ }
934
+ }
935
+
936
+ if(hasColor) {
937
+ colorOptions.hasColor = 1;
938
+ colorOptions.fields = fieldMap;
939
+ colorOptions["inputField"] = inputField; // Used to retain state on Column Format Dialog
940
+ return colorOptions;
871
941
  }
872
942
 
873
- return colorOptions;
943
+ return {};
874
944
  };
875
945
  /** @private
876
946
  * @function
@@ -881,7 +951,7 @@ ConditionalColoringPlugin.prototype._prepareColorOptions = function(colIndex, co
881
951
  ConditionalColoringPlugin._convertKeyword = function(userInput, fallback) {
882
952
  if(userInput) {
883
953
  // Note that THIS_COLUMN is a special keyword that needs to be converted before usage
884
- return userInput.indexOf("THIS_COLUMN") > -1 ? fallback : userInput;
954
+ return userInput.indexOf("THIS_COLUMN") < 0 ? userInput : fallback;
885
955
  }
886
956
  return fallback;
887
957
  };
@@ -12,8 +12,8 @@ declare namespace CellPainter {
12
12
  };
13
13
 
14
14
  type Condition = {
15
- field: string,
16
- expression: CellPainter.Expression|string|null,
15
+ expression: string|((...params: any[]) => any)|null,
16
+ field?: string|null,
17
17
  backgroundColor?: string|null,
18
18
  color?: string|null,
19
19
  fontSize?: string|null,
@@ -136,6 +136,8 @@ declare class CellPainter {
136
136
 
137
137
  public disableLevelColor(disabled?: boolean|null): void;
138
138
 
139
+ public setBlinkingDuration(duration: number): void;
140
+
139
141
  }
140
142
 
141
143
  export default CellPainter;
@@ -4,14 +4,16 @@ import { ElfUtil } from "./ElfUtil.js";
4
4
  import { ExpressionParser } from "./ExpressionParser.js";
5
5
 
6
6
  /** @typedef {Object} CellPainter~Expression
7
+ * @ignore
8
+ * @description This form of expression is deprecated
7
9
  * @property {string=} name
8
10
  * @property {string} text Text describes condition e.g. [FIELD] > 10
9
11
  * @property {Array=} values
10
12
  */
11
13
 
12
14
  /** @typedef {Object} CellPainter~Condition
13
- * @property {string} field Field to be used in the condition
14
- * @property {CellPainter~Expression|string} expression Text describes condition e.g. [FIELD] > 10
15
+ * @property {string|Function} expression A function, text, or an object with text property that describes the condition
16
+ * @property {string=} field Field to be used in the condition
15
17
  * @property {string=} backgroundColor CSS color string
16
18
  * @property {string=} color CSS color string
17
19
  * @property {string=} fontSize
@@ -79,17 +81,16 @@ CellPainter.prototype._columnStats = null;
79
81
  * @private
80
82
  */
81
83
  CellPainter.prototype._levelColorDisabled = false;
82
-
83
84
  /** @type {number}
84
85
  * @private
85
86
  */
86
- CellPainter._runningBlinkId = 0;
87
-
87
+ CellPainter.prototype._blinkingDuration = 250;
88
88
 
89
89
  /** @type {number}
90
90
  * @private
91
91
  */
92
- CellPainter._blinkingDuration = 250;
92
+ CellPainter._runningBlinkId = 0;
93
+
93
94
  /** @type {Array.<CellPainter>}
94
95
  * @private
95
96
  * @const
@@ -325,7 +326,7 @@ CellPainter.prototype.getColumnStats = function() {
325
326
  return this._columnStats;
326
327
  };
327
328
  /** @private
328
- * @param {CellPainter~Condition|Object} condition
329
+ * @param {CellPainter~Condition} condition
329
330
  */
330
331
  CellPainter.prototype._addCondition = function(condition) {
331
332
  var exp = condition["expression"];
@@ -1165,7 +1166,7 @@ CellPainter.prototype._blinkCell = function(cell, rowData, blinkSignal) {
1165
1166
  }
1166
1167
 
1167
1168
  CellPainter._clearBlinkTimer(scope);
1168
- scope["blinkTimer"] = setTimeout(scope._restorer, CellPainter._blinkingDuration);
1169
+ scope["blinkTimer"] = setTimeout(scope._restorer, this._blinkingDuration);
1169
1170
 
1170
1171
  return bgBlinking;
1171
1172
  };
@@ -1193,6 +1194,15 @@ CellPainter.prototype.verifyBlinking = function(cell, rowData) {
1193
1194
  CellPainter.prototype.disableLevelColor = function(disabled) {
1194
1195
  this._levelColorDisabled = disabled !== false;
1195
1196
  };
1197
+ /**
1198
+ * @public
1199
+ * @param {number} duration
1200
+ */
1201
+ CellPainter.prototype.setBlinkingDuration = function(duration) {
1202
+ if(typeof duration === "number"){
1203
+ this._blinkingDuration = duration;
1204
+ }
1205
+ };
1196
1206
 
1197
1207
  export default CellPainter;
1198
1208
  export {CellPainter};
@@ -195,6 +195,19 @@ var FilterOperators = {
195
195
  FilterOperators.TXTEQ = FilterOperators.EQ;
196
196
  FilterOperators.BLANK = FilterOperators.EQ_BLANK;
197
197
  FilterOperators.NBLANK = FilterOperators.EQ_NBLANK;
198
+ FilterOperators.NEQ_BLANK = FilterOperators.EQ_NBLANK;
199
+
200
+ FilterOperators.GREATER_THAN = FilterOperators.GT;
201
+ FilterOperators.GREATER_THAN_OR_EQUAL_TO = FilterOperators.GTE;
202
+ FilterOperators.EQUAL_TO = FilterOperators.EQ;
203
+ FilterOperators.LESS_THAN = FilterOperators.LT;
204
+ FilterOperators.LESS_THAN_OR_EQUAL_TO = FilterOperators.LTE;
205
+ // FilterOperators.BETWEEN = // No equivalent operator
206
+ FilterOperators.TEXT_THAT_CONTAINS = FilterOperators.CONT;
207
+ FilterOperators.TEXT_THAT_NOT_CONTAINS = FilterOperators.NCONT;
208
+ FilterOperators.TEXT_IS = FilterOperators.EQ;
209
+ // FilterOperators.BLANK = FilterOperators.EQ_BLANK;
210
+ FilterOperators.NOT_BLANK = FilterOperators.EQ_NBLANK;
198
211
 
199
212
 
200
213
  /** @type {!Object.<string, Function>}
@@ -142,7 +142,7 @@ declare class ColumnStackPlugin extends GridPlugin {
142
142
 
143
143
  public moveColumnById(srcCol: number|string|null, destCol?: (number|string)|null): boolean;
144
144
 
145
- public hideStack(stackId: string): void;
145
+ public hideStack(stackId: string, hidden?: boolean|null): void;
146
146
 
147
147
  public showStack(stackId: string): void;
148
148