@refinitiv-ui/efx-grid 6.0.68 → 6.0.70
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/column-selection-dialog/lib/column-selection-dialog.js +19 -7
- package/lib/core/dist/core.js +30 -2
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/grid/Core.d.ts +2 -0
- package/lib/core/es6/grid/Core.js +30 -2
- package/lib/filter-dialog/lib/filter-dialog.js +73 -32
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +52 -17
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/Grid.d.ts +5 -2
- package/lib/rt-grid/es6/Grid.js +22 -15
- package/lib/tr-grid-column-selection/es6/ColumnSelection.js +32 -0
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +13 -4
- package/lib/tr-grid-printer/es6/CellWriter.d.ts +5 -5
- package/lib/tr-grid-printer/es6/CellWriter.js +6 -6
- package/lib/tr-grid-printer/es6/GridPrinter.d.ts +7 -6
- package/lib/tr-grid-printer/es6/GridPrinter.js +4 -2
- package/lib/tr-grid-printer/es6/PrintTrait.d.ts +1 -1
- package/lib/tr-grid-printer/es6/SectionWriter.d.ts +1 -1
- package/lib/tr-grid-row-dragging/es6/RowDragging.js +65 -0
- package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +2 -2
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +225 -114
- package/lib/tr-grid-row-selection/es6/RowSelection.js +14 -32
- package/lib/tr-grid-util/es6/GridPlugin.js +52 -0
- package/lib/types/es6/Core/grid/Core.d.ts +2 -0
- package/lib/types/es6/RealtimeGrid/Grid.d.ts +5 -2
- package/lib/types/es6/RowFiltering.d.ts +2 -2
- package/lib/versions.json +11 -11
- package/package.json +1 -1
@@ -61,7 +61,7 @@ The expression can take various forms:<br>
|
|
61
61
|
*/
|
62
62
|
|
63
63
|
/** @typedef {Object} RowFilteringPlugin~FilterExpression
|
64
|
-
* @description FilterExpression contains all data used for saving and restoring filter in a column
|
64
|
+
* @description Deprecated. FilterExpression contains all data used for saving and restoring filter in a column
|
65
65
|
* @property {string} field
|
66
66
|
* @property {RowFilteringPlugin~Expression} expression Expression representing filter function
|
67
67
|
* @property {*} context Context object contains context/states given by user
|
@@ -307,6 +307,8 @@ RowFilteringPlugin.prototype.unload = function (host) {
|
|
307
307
|
host.unlisten("columnRemoved", this._onColumnRemoved);
|
308
308
|
|
309
309
|
if (!this._hosts.length) {
|
310
|
+
this._hasPendingFilter = false;
|
311
|
+
|
310
312
|
if (this._filterDialog) {
|
311
313
|
this._filterDialog.hide(); // Remove the dialog from document
|
312
314
|
|
@@ -335,6 +337,34 @@ RowFilteringPlugin.prototype._afterInit = function () {
|
|
335
337
|
setTimeout(this._onPreLoadedDialog, 10);
|
336
338
|
}
|
337
339
|
}
|
340
|
+
|
341
|
+
this._applyPendingFilter();
|
342
|
+
};
|
343
|
+
/** @private
|
344
|
+
*/
|
345
|
+
|
346
|
+
|
347
|
+
RowFilteringPlugin.prototype._applyPendingFilter = function () {
|
348
|
+
if (!this._initializedGrid) {
|
349
|
+
return;
|
350
|
+
}
|
351
|
+
|
352
|
+
if (!this._hasPendingFilter) {
|
353
|
+
return;
|
354
|
+
}
|
355
|
+
|
356
|
+
this._hasPendingFilter = false;
|
357
|
+
var colCount = this.getColumnCount();
|
358
|
+
|
359
|
+
for (var c = 0; c < colCount; ++c) {
|
360
|
+
var colSettings = this._getUserColumnSettings(c);
|
361
|
+
|
362
|
+
if (colSettings.expression) {
|
363
|
+
this.addColumnFilter(c, colSettings.expression, colSettings.filterState);
|
364
|
+
} else {
|
365
|
+
this._removeColumnFilters(c);
|
366
|
+
}
|
367
|
+
}
|
338
368
|
};
|
339
369
|
/** @private
|
340
370
|
*/
|
@@ -424,6 +454,8 @@ RowFilteringPlugin.prototype.config = function (options) {
|
|
424
454
|
|
425
455
|
this._setColumnOptions(i, column);
|
426
456
|
}
|
457
|
+
|
458
|
+
this._applyPendingFilter();
|
427
459
|
};
|
428
460
|
/** @public
|
429
461
|
* @param {Object=} gridOptions
|
@@ -448,22 +480,20 @@ RowFilteringPlugin.prototype.getConfigObject = function (gridOptions) {
|
|
448
480
|
column = columns[i] = {};
|
449
481
|
}
|
450
482
|
|
451
|
-
var
|
483
|
+
var colSettings = this._getUserColumnSettings(i);
|
452
484
|
|
453
|
-
|
454
|
-
var exp = cfo._expressions[0];
|
485
|
+
var exp = colSettings.expression;
|
455
486
|
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
487
|
+
if (exp && typeof exp !== "function") {
|
488
|
+
// TODO: Accept function type
|
489
|
+
column.filter = exp; // This could be string, array, or object
|
490
|
+
}
|
460
491
|
|
461
|
-
|
492
|
+
var ctx = colSettings.filterState;
|
462
493
|
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
}
|
494
|
+
if (ctx != null) {
|
495
|
+
if (_typeof(ctx) !== "object" || !ctx._autoGenerated) {
|
496
|
+
column.filterState = ctx;
|
467
497
|
}
|
468
498
|
}
|
469
499
|
}
|
@@ -655,7 +685,10 @@ RowFilteringPlugin.prototype.addColumnFilter = function (colIndex, exp, ctx) {
|
|
655
685
|
func =
|
656
686
|
/** @type{Function} */
|
657
687
|
exp;
|
658
|
-
|
688
|
+
|
689
|
+
if (ctx && typeof ctx === "string") {
|
690
|
+
exp = ctx;
|
691
|
+
}
|
659
692
|
} else {
|
660
693
|
func = this._parseFilter(exp, colIndex, ctx);
|
661
694
|
}
|
@@ -664,6 +697,16 @@ RowFilteringPlugin.prototype.addColumnFilter = function (colIndex, exp, ctx) {
|
|
664
697
|
return false;
|
665
698
|
}
|
666
699
|
|
700
|
+
if (colIndex < 0 || colIndex >= this.getColumnCount()) {
|
701
|
+
return false;
|
702
|
+
}
|
703
|
+
|
704
|
+
var colSettings = this._getUserColumnSettings(colIndex);
|
705
|
+
|
706
|
+
colSettings.expression = exp; // WARNING: Only the last expression are saved (previous one is overwritten)
|
707
|
+
|
708
|
+
colSettings.filterState = ctx;
|
709
|
+
|
667
710
|
if (ctx == null) {
|
668
711
|
ctx = {
|
669
712
|
"_autoGenerated": true
|
@@ -712,10 +755,28 @@ RowFilteringPlugin.prototype.addColumnFilter = function (colIndex, exp, ctx) {
|
|
712
755
|
* @param {(Object|string)=} ctx Context object that will be passed as the third parameter for the filter logic
|
713
756
|
* @return {boolean} True If there is any change
|
714
757
|
* @fires RowFilteringPlugin#filterChanged
|
758
|
+
* @example
|
759
|
+
* extension.setColumnFilter(colIndex1,
|
760
|
+
* [["GT", 0]]
|
761
|
+
* );
|
762
|
+
* extension.setColumnFilter(colIndex2,
|
763
|
+
* "filter": "[PCTCHNG] > 0"
|
764
|
+
* );
|
765
|
+
* extension.setColumnFilter(colIndex3,
|
766
|
+
* function(rowData) {
|
767
|
+
* return rowData["PCTCHNG"] > 0;
|
768
|
+
* }
|
769
|
+
* );
|
715
770
|
*/
|
716
771
|
|
717
772
|
|
718
773
|
RowFilteringPlugin.prototype.setColumnFilter = function (colIndex, exp, ctx) {
|
774
|
+
var curExp = this._getColumnExpression(colIndex);
|
775
|
+
|
776
|
+
if (curExp === exp) {
|
777
|
+
return false;
|
778
|
+
}
|
779
|
+
|
719
780
|
var removed = this._removeColumnFilters(colIndex);
|
720
781
|
|
721
782
|
var added = this.addColumnFilter(colIndex, exp, ctx);
|
@@ -726,71 +787,88 @@ RowFilteringPlugin.prototype.setColumnFilter = function (colIndex, exp, ctx) {
|
|
726
787
|
|
727
788
|
return removed || added;
|
728
789
|
};
|
790
|
+
/** @private
|
791
|
+
* @param {number} colIndex
|
792
|
+
* @return {RowFilteringPlugin~Expression}
|
793
|
+
*/
|
794
|
+
|
795
|
+
|
796
|
+
RowFilteringPlugin.prototype._getColumnExpression = function (colIndex) {
|
797
|
+
var colSettings = this._getUserColumnSettings(colIndex);
|
798
|
+
|
799
|
+
return colSettings.expression || null;
|
800
|
+
};
|
729
801
|
/** Set data to colData["rowFiltering"]
|
730
802
|
* @private
|
731
803
|
* @param {number} colIndex
|
732
|
-
* @param {RowFilteringPlugin~ColumnOptions}
|
804
|
+
* @param {RowFilteringPlugin~ColumnOptions} userObj
|
733
805
|
* @example
|
734
|
-
* var
|
735
|
-
* "
|
806
|
+
* var colDef1 = {
|
807
|
+
* "field": "PCTCHNG",
|
808
|
+
* "filter": [["GT", 0]]
|
736
809
|
* };
|
737
810
|
* var colDef2 = {
|
738
811
|
* "filter": "[PCTCHNG] > 0"
|
739
812
|
* };
|
740
813
|
* var colDef3 = {
|
741
|
-
* "filter": function() {
|
814
|
+
* "filter": function(rowData) {
|
815
|
+
* return rowData["PCTCHNG"] > 0;
|
816
|
+
* }
|
742
817
|
* };
|
743
818
|
*/
|
744
819
|
|
745
820
|
|
746
|
-
RowFilteringPlugin.prototype._setColumnOptions = function (colIndex,
|
747
|
-
var
|
821
|
+
RowFilteringPlugin.prototype._setColumnOptions = function (colIndex, userObj) {
|
822
|
+
var colSettings = this._getUserColumnSettings(colIndex);
|
748
823
|
|
749
|
-
var filterIcon =
|
750
|
-
|
824
|
+
var filterIcon = userObj["filterIcon"]; // TODO: This should not be set here, should retreive data type from Composite/Realtime Grid
|
825
|
+
|
826
|
+
var fieldDataType = userObj["fieldDataType"] || userObj["dataType"];
|
751
827
|
|
752
828
|
if (fieldDataType) {
|
753
|
-
|
829
|
+
colSettings.fieldDataType = fieldDataType; // TODO: This should not be set here, should retreive data type from Composite/Realtime Grid
|
754
830
|
}
|
755
831
|
|
756
832
|
if (filterIcon != null) {
|
757
|
-
|
833
|
+
colSettings.filterIcon = filterIcon;
|
758
834
|
}
|
759
835
|
|
760
|
-
var
|
761
|
-
var exp = columnOptions["filter"];
|
836
|
+
var exp = userObj["filter"];
|
762
837
|
|
763
|
-
if (exp) {
|
764
|
-
|
765
|
-
|
766
|
-
this.
|
838
|
+
if (exp != null) {
|
839
|
+
colSettings.expression = exp;
|
840
|
+
colSettings.filterState = null;
|
841
|
+
this._hasPendingFilter = true;
|
767
842
|
}
|
768
|
-
};
|
769
|
-
/** @private
|
770
|
-
* @param {number} colIndex
|
771
|
-
* @return {Object} colData["rowFiltering"]
|
772
|
-
*/
|
773
843
|
|
844
|
+
var filterState = userObj["filterState"];
|
845
|
+
|
846
|
+
if (filterState != null) {
|
847
|
+
colSettings.filterState = filterState;
|
848
|
+
}
|
849
|
+
|
850
|
+
var iconActivation = filterIcon == false ? "none" : this._iconActivation;
|
774
851
|
|
775
|
-
|
776
|
-
|
852
|
+
if (iconActivation == "always" || iconActivation == "onHover") {
|
853
|
+
this._updateColumnIcon(colIndex);
|
854
|
+
}
|
777
855
|
};
|
778
856
|
/** @private
|
779
857
|
* @param {number} colIndex
|
780
|
-
* @return {!Object}
|
858
|
+
* @return {!Object} colData["rowFiltering"]
|
781
859
|
*/
|
782
860
|
|
783
861
|
|
784
|
-
RowFilteringPlugin.prototype.
|
785
|
-
var
|
862
|
+
RowFilteringPlugin.prototype._getUserColumnSettings = function (colIndex) {
|
863
|
+
var colData = this._newColumnData(colIndex);
|
786
864
|
|
787
|
-
var
|
865
|
+
var colSettings = colData["rowFiltering"];
|
788
866
|
|
789
|
-
if (!
|
790
|
-
|
867
|
+
if (!colSettings) {
|
868
|
+
colSettings = colData["rowFiltering"] = {};
|
791
869
|
}
|
792
870
|
|
793
|
-
return
|
871
|
+
return colSettings;
|
794
872
|
};
|
795
873
|
/** @private
|
796
874
|
* @param {number} colIndex
|
@@ -799,40 +877,37 @@ RowFilteringPlugin.prototype._newExtColumnOptions = function (colIndex) {
|
|
799
877
|
|
800
878
|
|
801
879
|
RowFilteringPlugin.prototype._getColumnFilterOption = function (colIndex) {
|
802
|
-
var
|
880
|
+
var colSettings = this._getUserColumnSettings(colIndex);
|
803
881
|
|
804
|
-
if (
|
805
|
-
return
|
882
|
+
if (colSettings) {
|
883
|
+
return colSettings["filterOption"] || null;
|
806
884
|
} else {
|
807
885
|
return null;
|
808
886
|
}
|
809
887
|
};
|
810
|
-
/**
|
888
|
+
/** Remove colData["rowFiltering"]["filterOption"]
|
811
889
|
* @private
|
812
890
|
* @param {number} colIndex
|
813
|
-
* @param {Object} filterOption
|
814
891
|
*/
|
815
892
|
|
816
893
|
|
817
|
-
RowFilteringPlugin.prototype.
|
818
|
-
var
|
819
|
-
|
820
|
-
if (filterOption) {
|
821
|
-
colOptions["filterOption"] = filterOption;
|
822
|
-
} else {
|
823
|
-
var cfo = colOptions["filterOption"];
|
894
|
+
RowFilteringPlugin.prototype._removeActiveFilterStates = function (colIndex) {
|
895
|
+
var colSettings = this._getUserColumnSettings(colIndex);
|
824
896
|
|
825
|
-
|
826
|
-
|
897
|
+
colSettings.expression = null;
|
898
|
+
colSettings.filterState = null;
|
899
|
+
var cfo = colSettings["filterOption"];
|
827
900
|
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
901
|
+
if (cfo) {
|
902
|
+
colSettings["filterOption"] = null;
|
903
|
+
|
904
|
+
if (cfo._filters.length) {
|
905
|
+
this._dispatch("filterChanged", {
|
906
|
+
"filterType": "column",
|
907
|
+
"changeType": "remove",
|
908
|
+
"colIndex": colIndex,
|
909
|
+
"field": this._getField(colIndex)
|
910
|
+
});
|
836
911
|
}
|
837
912
|
}
|
838
913
|
};
|
@@ -851,7 +926,9 @@ RowFilteringPlugin.prototype._initColumnFilterOption = function (colIndex) {
|
|
851
926
|
cfo._expressions = [];
|
852
927
|
cfo._context = [];
|
853
928
|
|
854
|
-
this.
|
929
|
+
var colSettings = this._getUserColumnSettings(colIndex);
|
930
|
+
|
931
|
+
colSettings["filterOption"] = cfo;
|
855
932
|
}
|
856
933
|
|
857
934
|
return cfo;
|
@@ -907,6 +984,7 @@ RowFilteringPlugin.prototype.removeFilter = function (funcRef) {
|
|
907
984
|
* @public
|
908
985
|
* @param {number} colIndex
|
909
986
|
* @return {boolean} True if there is any change
|
987
|
+
* @fires RowFilteringPlugin#filterChanged
|
910
988
|
*/
|
911
989
|
|
912
990
|
|
@@ -927,6 +1005,7 @@ RowFilteringPlugin.prototype.removeColumnFilters = function (colIndex) {
|
|
927
1005
|
/** @private
|
928
1006
|
* @param {number} colIndex
|
929
1007
|
* @return {boolean} True if there is any change
|
1008
|
+
* @fires RowFilteringPlugin#filterChanged
|
930
1009
|
*/
|
931
1010
|
|
932
1011
|
|
@@ -940,7 +1019,7 @@ RowFilteringPlugin.prototype._removeColumnFilters = function (colIndex) {
|
|
940
1019
|
this._columnFilters.splice(funcIndex, 1);
|
941
1020
|
}
|
942
1021
|
|
943
|
-
this.
|
1022
|
+
this._removeActiveFilterStates(colIndex); // filterChanged fired
|
944
1023
|
|
945
1024
|
|
946
1025
|
var inputExt = this._getPlugin("FilterInputPlugin"); // TODO: Use the event instead
|
@@ -958,6 +1037,7 @@ RowFilteringPlugin.prototype._removeColumnFilters = function (colIndex) {
|
|
958
1037
|
* @function
|
959
1038
|
* @param {number} colIndex
|
960
1039
|
* @return {boolean} True if there is any change
|
1040
|
+
* @fires RowFilteringPlugin#filterChanged
|
961
1041
|
*/
|
962
1042
|
|
963
1043
|
|
@@ -965,6 +1045,7 @@ RowFilteringPlugin.prototype.removeColumnFilter = RowFilteringPlugin.prototype.r
|
|
965
1045
|
/** Remove all column filters from all columns, excluding global filters
|
966
1046
|
* @public
|
967
1047
|
* @return {boolean} Return true if there is any change
|
1048
|
+
* @fires RowFilteringPlugin#filterChanged
|
968
1049
|
*/
|
969
1050
|
|
970
1051
|
RowFilteringPlugin.prototype.removeAllColumnFilters = function () {
|
@@ -976,7 +1057,7 @@ RowFilteringPlugin.prototype.removeAllColumnFilters = function () {
|
|
976
1057
|
var colCount = this._getColumnCount();
|
977
1058
|
|
978
1059
|
for (var i = 0; i < colCount; ++i) {
|
979
|
-
this.
|
1060
|
+
this._removeActiveFilterStates(i); // filterChanged fired
|
980
1061
|
|
981
1062
|
|
982
1063
|
inputExt && inputExt.updateUI(i, ""); // TODO: Use the event instead
|
@@ -1054,10 +1135,10 @@ RowFilteringPlugin.prototype.setRowTransform = function (func) {
|
|
1054
1135
|
RowFilteringPlugin.prototype.getFilters = function () {
|
1055
1136
|
return this._globalFilters;
|
1056
1137
|
};
|
1057
|
-
/**
|
1138
|
+
/** Returns filter functions. Use getConfigObject for saving and loading instead of this function
|
1058
1139
|
* @public
|
1059
1140
|
* @return {!Array.<Function>} All column filters
|
1060
|
-
* @see {@link RowFilteringPlugin.
|
1141
|
+
* @see {@link RowFilteringPlugin.getConfigObject}
|
1061
1142
|
*/
|
1062
1143
|
|
1063
1144
|
|
@@ -1076,21 +1157,22 @@ RowFilteringPlugin.prototype.getAllColumnFilters = function () {
|
|
1076
1157
|
|
1077
1158
|
return filters;
|
1078
1159
|
};
|
1079
|
-
/** Get existing filter expressions for saving and restoring.
|
1160
|
+
/** Deprecated in favor of getConfigObject(). Get existing filter expressions for saving and restoring.
|
1080
1161
|
* @public
|
1081
1162
|
* @return {Array.<RowFilteringPlugin~FilterExpression>} Return null if there is no column filter
|
1082
|
-
* @see {@link RowFilteringPlugin.
|
1163
|
+
* @see {@link RowFilteringPlugin.getConfigObject}
|
1083
1164
|
*/
|
1084
1165
|
|
1085
1166
|
|
1086
1167
|
RowFilteringPlugin.prototype.getFilterExpressions = function () {
|
1087
1168
|
if (this._columnFilters.length) {
|
1169
|
+
// TODO: Provide a way to save rawDataAccessor and formattedDataAccessor
|
1088
1170
|
return this._columnFilters.map(toFilterExpression);
|
1089
1171
|
}
|
1090
1172
|
|
1091
1173
|
return null;
|
1092
1174
|
};
|
1093
|
-
/** Clear all existing column filters and restore column filters from the given valid filter expressions. If the parameter is null, the result is equivalent to calling removeAllColumnFilters();
|
1175
|
+
/** Deprecated. Clear all existing column filters and restore column filters from the given valid filter expressions. If the parameter is null, the result is equivalent to calling removeAllColumnFilters();
|
1094
1176
|
* @public
|
1095
1177
|
* @param {Array.<RowFilteringPlugin~FilterExpression>} filterExps
|
1096
1178
|
*/
|
@@ -1110,7 +1192,7 @@ RowFilteringPlugin.prototype.setFilterExpressions = function (filterExps) {
|
|
1110
1192
|
var colIndex = fields.indexOf(field);
|
1111
1193
|
|
1112
1194
|
if (colIndex >= 0) {
|
1113
|
-
this.
|
1195
|
+
this.setColumnFilter(colIndex, filterExp.expression, filterExp.context);
|
1114
1196
|
}
|
1115
1197
|
}
|
1116
1198
|
}
|
@@ -1349,11 +1431,13 @@ RowFilteringPlugin.prototype.refresh = function () {
|
|
1349
1431
|
|
1350
1432
|
|
1351
1433
|
RowFilteringPlugin.prototype._updateColumnIcon = function (colIndex) {
|
1352
|
-
var cfo = this._getColumnFilterOption(colIndex);
|
1434
|
+
var cfo = this._getColumnFilterOption(colIndex); // colData["rowFiltering"]["filterOption"]
|
1353
1435
|
|
1354
|
-
var co = this._getExtColumnOptions(colIndex);
|
1355
1436
|
|
1356
|
-
var
|
1437
|
+
var colSettings = this._getUserColumnSettings(colIndex); // colData["rowFiltering"]
|
1438
|
+
|
1439
|
+
|
1440
|
+
var iconActivation = colSettings.filterIcon == false ? "none" : this._iconActivation;
|
1357
1441
|
var hasFilter = cfo ? cfo._filters.length : 0;
|
1358
1442
|
|
1359
1443
|
for (var i = this._hosts.length; --i >= 0;) {
|
@@ -1492,10 +1576,10 @@ RowFilteringPlugin.prototype.getColumnFilterState = function (colIndex) {
|
|
1492
1576
|
|
1493
1577
|
return null;
|
1494
1578
|
};
|
1495
|
-
/** Get the stored user context from all columns. The column with no filter will return null value
|
1579
|
+
/** Deprecated in favor of getConfigObject(). Get the stored user context from all columns. The column with no filter will return null value
|
1496
1580
|
* @public
|
1497
1581
|
* @return {!Array} Array of context objects
|
1498
|
-
* @see {@link RowFilteringPlugin.
|
1582
|
+
* @see {@link RowFilteringPlugin.getConfigObject}
|
1499
1583
|
*/
|
1500
1584
|
|
1501
1585
|
|
@@ -1554,11 +1638,13 @@ RowFilteringPlugin.prototype._getDataTable = function (dv) {
|
|
1554
1638
|
* @param {string=} fmtField A field name to be used instead of formatter for getting formatted value
|
1555
1639
|
* @param {Function=} rawDataAccessor Data getter to retrieve raw value
|
1556
1640
|
* @param {Function=} formattedDataAccessor Data getter to retrieve formatted value. This paramter will override formatted and fmtField parameters
|
1641
|
+
* @param {Function=} filterFuncs
|
1642
|
+
* @param {Object=} selectedItems
|
1557
1643
|
* @return {Object} Object that maps formatted value to array of raw values
|
1558
1644
|
*/
|
1559
1645
|
|
1560
1646
|
|
1561
|
-
RowFilteringPlugin.prototype.getUniqueValues = function (field, formatter, fmtField, rawDataAccessor, formattedDataAccessor) {
|
1647
|
+
RowFilteringPlugin.prototype.getUniqueValues = function (field, formatter, fmtField, rawDataAccessor, formattedDataAccessor, filterFuncs, selectedItems) {
|
1562
1648
|
if (!field) {
|
1563
1649
|
return null;
|
1564
1650
|
}
|
@@ -1629,6 +1715,12 @@ RowFilteringPlugin.prototype.getUniqueValues = function (field, formatter, fmtFi
|
|
1629
1715
|
continue;
|
1630
1716
|
}
|
1631
1717
|
|
1718
|
+
if (filterFuncs) {
|
1719
|
+
if (!selectedItems[formattedVal]) {
|
1720
|
+
selectedItems[formattedVal] = RowFilteringPlugin._getFilteredValue(row, filterFuncs);
|
1721
|
+
}
|
1722
|
+
}
|
1723
|
+
|
1632
1724
|
var rawValues = uniqueValues[formattedVal];
|
1633
1725
|
|
1634
1726
|
if (rawValues) {
|
@@ -1668,6 +1760,23 @@ RowFilteringPlugin._createDialog = function () {
|
|
1668
1760
|
|
1669
1761
|
return tag ? document.createElement(tag) : null;
|
1670
1762
|
};
|
1763
|
+
/** @private
|
1764
|
+
* @function
|
1765
|
+
* @param {Object} rowData
|
1766
|
+
* @param {!Array.<Function>} filters
|
1767
|
+
* @returns {boolean}
|
1768
|
+
*/
|
1769
|
+
|
1770
|
+
|
1771
|
+
RowFilteringPlugin._getFilteredValue = function (rowData, filters) {
|
1772
|
+
for (var i = filters.length; --i >= 0;) {
|
1773
|
+
if (!filters[i](rowData)) {
|
1774
|
+
return false;
|
1775
|
+
}
|
1776
|
+
}
|
1777
|
+
|
1778
|
+
return true;
|
1779
|
+
};
|
1671
1780
|
/** @public
|
1672
1781
|
* @param {number} colIndex
|
1673
1782
|
* @param {RowFilteringPlugin~FilterDialogOptions=} runtimeDialogOptions
|
@@ -1767,13 +1876,6 @@ RowFilteringPlugin.prototype.openDialog = function (colIndex, runtimeDialogOptio
|
|
1767
1876
|
this._filterDialog.setSortState(stp.getSortOrder(colIndex)); // This is for ELF v3
|
1768
1877
|
|
1769
1878
|
} // Setting up dialog configuration
|
1770
|
-
// cfo is required for storing unique entries in the dialog, even though no filter is active
|
1771
|
-
|
1772
|
-
|
1773
|
-
var cfo = this._initColumnFilterOption(colIndex); // colData["rowFiltering"]["filterOption"]
|
1774
|
-
|
1775
|
-
|
1776
|
-
var colOptions = this._getExtColumnOptions(colIndex); // colData["rowFiltering"]
|
1777
1879
|
|
1778
1880
|
|
1779
1881
|
var colData = host.getColumnData(colIndex);
|
@@ -1802,36 +1904,53 @@ RowFilteringPlugin.prototype.openDialog = function (colIndex, runtimeDialogOptio
|
|
1802
1904
|
};
|
1803
1905
|
var columnDialogOptions = null;
|
1804
1906
|
|
1805
|
-
|
1806
|
-
|
1807
|
-
|
1808
|
-
|
1809
|
-
|
1810
|
-
|
1811
|
-
|
1907
|
+
var colSettings = this._getUserColumnSettings(colIndex); // colData["rowFiltering"]
|
1908
|
+
|
1909
|
+
|
1910
|
+
if (colSettings.fieldDataType) {
|
1911
|
+
// TODO: Use data type from Composite Grid (getColumnDataType) or Realtime Grid (getDataType) instead
|
1912
|
+
columnDialogOptions = {
|
1913
|
+
fieldDataType: colSettings.fieldDataType
|
1914
|
+
};
|
1812
1915
|
}
|
1813
1916
|
|
1814
1917
|
RowFilteringPlugin._overrideConfig(dialogConfig, this._dialogOptions);
|
1815
1918
|
|
1816
1919
|
RowFilteringPlugin._overrideConfig(dialogConfig, columnDialogOptions);
|
1817
1920
|
|
1818
|
-
RowFilteringPlugin._overrideConfig(dialogConfig, runtimeDialogOptions);
|
1921
|
+
RowFilteringPlugin._overrideConfig(dialogConfig, runtimeDialogOptions); // cfo is required for storing unique entries in the dialog, even though no filter is active
|
1922
|
+
// TODO: move rawDataAccessor and other settings to colSettings
|
1923
|
+
|
1924
|
+
|
1925
|
+
var cfo = this._initColumnFilterOption(colIndex); // colData["rowFiltering"]["filterOption"]
|
1926
|
+
|
1819
1927
|
|
1820
1928
|
var rawDataAccessor = cfo._rawDataAccessor = dialogConfig.rawDataAccessor || null;
|
1821
1929
|
var formattedDataAccessor = cfo._formattedDataAccessor = dialogConfig.formattedDataAccessor || null;
|
1822
1930
|
var sortLogic = dialogConfig.sortLogic || null; // Populate data for filter dialog based on existing states
|
1823
1931
|
|
1824
|
-
var
|
1825
|
-
var
|
1826
|
-
var selectedItems = ctx ? ctx.selectedItems : null;
|
1932
|
+
var condition2D = null;
|
1933
|
+
var filterMode = ""; // default
|
1827
1934
|
|
1828
|
-
|
1829
|
-
|
1830
|
-
|
1831
|
-
|
1935
|
+
var filterFuncs = null;
|
1936
|
+
var exp = colSettings.expression;
|
1937
|
+
|
1938
|
+
if (exp) {
|
1939
|
+
if (Array.isArray(exp)) {
|
1940
|
+
if (exp.length) {
|
1941
|
+
condition2D = Array.isArray(exp[0]) ? exp : [exp]; // Guaranteed condition2D to be a 2D array
|
1942
|
+
|
1943
|
+
filterMode = "advanced";
|
1944
|
+
}
|
1945
|
+
} else if (typeof exp === "function" || typeof exp === "string" || _typeof(exp) === "object") {
|
1946
|
+
if (cfo._filters && cfo._filters.length) {
|
1947
|
+
filterFuncs = cfo._filters;
|
1948
|
+
}
|
1949
|
+
}
|
1832
1950
|
}
|
1833
1951
|
|
1834
|
-
var
|
1952
|
+
var selectedItems = {};
|
1953
|
+
var uniqueValues = cfo.uniqueValues = this.getUniqueValues(field, this._getFormatter(colIndex), "", rawDataAccessor, formattedDataAccessor, filterFuncs, selectedItems);
|
1835
1954
|
var keys = Object.keys(uniqueValues);
|
1836
1955
|
|
1837
1956
|
if (sortLogic) {
|
@@ -1862,8 +1981,8 @@ RowFilteringPlugin.prototype.openDialog = function (colIndex, runtimeDialogOptio
|
|
1862
1981
|
this._filterDialog._colIndex = colIndex;
|
1863
1982
|
this._filterDialog.data = items; // TODO: Move all settings to configuration object
|
1864
1983
|
|
1865
|
-
this._filterDialog.filterMode =
|
1866
|
-
this._filterDialog.conditions =
|
1984
|
+
this._filterDialog.filterMode = filterMode;
|
1985
|
+
this._filterDialog.conditions = condition2D;
|
1867
1986
|
|
1868
1987
|
this._filterDialog.show();
|
1869
1988
|
};
|
@@ -2059,14 +2178,6 @@ RowFilteringPlugin.prototype._onDialogFilterChanged = function (e) {
|
|
2059
2178
|
}
|
2060
2179
|
|
2061
2180
|
if (atLeastOne) {
|
2062
|
-
if (!ctx) {
|
2063
|
-
ctx = {};
|
2064
|
-
}
|
2065
|
-
|
2066
|
-
if (ctx) {
|
2067
|
-
ctx["selectedItems"] = selectedItems; // For restore item in the dialog
|
2068
|
-
}
|
2069
|
-
|
2070
2181
|
this.addColumnFilter(colIndex, itemMap, ctx);
|
2071
2182
|
}
|
2072
2183
|
|
@@ -633,16 +633,21 @@ RowSelectionPlugin.prototype._onClick = function (e) {
|
|
633
633
|
* @param {Object=} mouseEvt
|
634
634
|
*/
|
635
635
|
RowSelectionPlugin.prototype.selectByMouse = function (rowIndex, mouseEvt) {
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
636
|
+
var eventObj = this._mockMouseEvent(0, rowIndex, mouseEvt);
|
637
|
+
this._onMouseDown(eventObj);
|
638
|
+
};
|
639
|
+
|
640
|
+
/** @public
|
641
|
+
* @description Select a specified row as if it were modified by a keyboard input. This is for testing purpose.
|
642
|
+
* @ignore
|
643
|
+
* @param {number|string} keyCode Use key code number or "up", "down" string
|
644
|
+
* @param {Object=} keyboardEvt
|
645
|
+
*/
|
646
|
+
RowSelectionPlugin.prototype.selectByKey = function (keyCode, keyboardEvt) {
|
647
|
+
var eventObj = this._mockKeyboardEvent(keyCode, keyboardEvt);
|
648
|
+
this._onKeyDown(eventObj);
|
645
649
|
};
|
650
|
+
|
646
651
|
/** @private
|
647
652
|
* @description Left click will cause single row selection <br>
|
648
653
|
* Shift + left click will cause range selection <br>
|
@@ -783,29 +788,6 @@ RowSelectionPlugin.prototype._clearPendingClickIndex = function (host) {
|
|
783
788
|
host && host.unlisten("mousemove", this._onMouseMove);
|
784
789
|
};
|
785
790
|
|
786
|
-
/** @public
|
787
|
-
* @description Select a specified row as if it were modified by a keyboard input. This is for testing purpose.
|
788
|
-
* @ignore
|
789
|
-
* @param {number} keyCode Use -1 for arrow up. Use 1 for arrow down
|
790
|
-
* @param {Object=} keyboardEvt
|
791
|
-
*/
|
792
|
-
RowSelectionPlugin.prototype.selectByKey = function (keyCode, keyboardEvt) {
|
793
|
-
if(!keyboardEvt) {
|
794
|
-
keyboardEvt = {};
|
795
|
-
}
|
796
|
-
if(keyCode) {
|
797
|
-
if(keyCode === 1) {
|
798
|
-
keyboardEvt.keyCode = 40;
|
799
|
-
} else if(keyCode === -1) {
|
800
|
-
keyboardEvt.keyCode = 38;
|
801
|
-
} else if(typeof keyCode === "number"){
|
802
|
-
keyboardEvt.keyCode = keyCode;
|
803
|
-
}
|
804
|
-
}
|
805
|
-
keyboardEvt.preventDefault = function(){};
|
806
|
-
keyboardEvt.stopPropagation = function(){};
|
807
|
-
this._onKeyDown(keyboardEvt);
|
808
|
-
};
|
809
791
|
/** @private
|
810
792
|
* @param {KeyboardEvent} e
|
811
793
|
*/
|