@refinitiv-ui/efx-grid 6.0.65 → 6.0.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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