@refinitiv-ui/efx-grid 6.0.62 → 6.0.64
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.
- package/lib/grid/index.js +1 -1
- package/lib/row-segmenting/es6/RowSegmenting.d.ts +3 -0
- package/lib/row-segmenting/es6/RowSegmenting.js +37 -8
- package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +13 -3
- package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +5 -4
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +111 -30
- package/lib/tr-grid-row-grouping/es6/RowGrouping.js +0 -1
- package/lib/tr-grid-util/es6/ExpanderIcon.d.ts +0 -3
- package/lib/tr-grid-util/es6/ExpanderIcon.js +0 -49
- package/lib/tr-grid-util/es6/FilterBuilder.js +1 -8
- package/lib/tr-grid-util/es6/RowPainter.js +30 -0
- package/lib/types/es6/RowFiltering.d.ts +5 -4
- package/lib/types/es6/RowSegmenting.d.ts +3 -0
- package/lib/versions.json +5 -5
- package/package.json +1 -1
package/lib/grid/index.js
CHANGED
@@ -4,6 +4,7 @@ import { ExpanderIcon } from "../../tr-grid-util/es6/ExpanderIcon.js";
|
|
4
4
|
import { ElfUtil } from "../../tr-grid-util/es6/ElfUtil.js";
|
5
5
|
import { RowPainter } from "../../tr-grid-util/es6/RowPainter.js";
|
6
6
|
import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
|
7
|
+
import { Conflator } from "../../tr-grid-util/es6/Conflator.js";
|
7
8
|
|
8
9
|
declare namespace RowSegmentingPlugin {
|
9
10
|
|
@@ -33,6 +34,8 @@ declare class RowSegmentingPlugin extends GridPlugin {
|
|
33
34
|
|
34
35
|
public initialize(host: any, options?: any): void;
|
35
36
|
|
37
|
+
public requestSeparatorRefresh(): void;
|
38
|
+
|
36
39
|
public unload(host?: any): void;
|
37
40
|
|
38
41
|
public config(options?: any): void;
|
@@ -4,6 +4,7 @@ import { ExpanderIcon } from "../../tr-grid-util/es6/ExpanderIcon.js";
|
|
4
4
|
import { ElfUtil } from "../../tr-grid-util/es6/ElfUtil.js";
|
5
5
|
import { RowPainter } from "../../tr-grid-util/es6/RowPainter.js";
|
6
6
|
import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
|
7
|
+
import { Conflator } from "../../tr-grid-util/es6/Conflator.js";
|
7
8
|
|
8
9
|
/** @typedef {Object} RowSegmentingPlugin~Options
|
9
10
|
* @description The options can be specified by `rowSegmenting` property of the main grid's options
|
@@ -37,6 +38,8 @@ var RowSegmentingPlugin = function (options) {
|
|
37
38
|
t._updateHeader = t._updateHeader.bind(t);
|
38
39
|
t._onArrowClick = t._onArrowClick.bind(t);
|
39
40
|
t._rtSortingLogic = t._rtSortingLogic.bind(t);
|
41
|
+
t._refreshSegmentSeparator = t._refreshSegmentSeparator.bind(t);
|
42
|
+
t._separatorRefreshConflator = new Conflator(10, t._refreshSegmentSeparator);
|
40
43
|
|
41
44
|
t._hosts = [];
|
42
45
|
this.config({ rowSegmenting: options });
|
@@ -51,6 +54,10 @@ RowSegmentingPlugin.prototype._userSortingLogic = null;
|
|
51
54
|
* @private
|
52
55
|
*/
|
53
56
|
RowSegmentingPlugin.prototype._spanning = true;
|
57
|
+
/** @type {boolean}
|
58
|
+
* @private
|
59
|
+
*/
|
60
|
+
RowSegmentingPlugin.prototype._prevSegmentBySegmentId = false;
|
54
61
|
/** @type {Array.<number>}
|
55
62
|
* @private
|
56
63
|
*/
|
@@ -83,6 +90,10 @@ RowSegmentingPlugin.prototype._segmentIdField = "SEGMENT_ID";
|
|
83
90
|
* @private
|
84
91
|
*/
|
85
92
|
RowSegmentingPlugin.prototype._runningId = 0;
|
93
|
+
/** @type {Conflator}
|
94
|
+
* @private
|
95
|
+
*/
|
96
|
+
RowSegmentingPlugin.prototype._separatorRefreshConflator = null;
|
86
97
|
/** @type {Object}
|
87
98
|
* @private
|
88
99
|
*/
|
@@ -125,7 +136,6 @@ RowSegmentingPlugin.prototype.initialize = function (host, options) {
|
|
125
136
|
}
|
126
137
|
|
127
138
|
ExpanderIcon.loadExpanderStyles();
|
128
|
-
ExpanderIcon.injectExpanderStyles(host.getElement());
|
129
139
|
|
130
140
|
this._hosts.push(host);
|
131
141
|
host.listen("preSectionDataBinding", this._onPreSectionDataBinding);
|
@@ -146,19 +156,34 @@ RowSegmentingPlugin.prototype.initialize = function (host, options) {
|
|
146
156
|
enabled = this._headerMenuClicked;
|
147
157
|
RowPainter.enableHeaderMenu(host, enabled ? true : false);
|
148
158
|
};
|
149
|
-
|
150
|
-
|
151
|
-
* @
|
159
|
+
|
160
|
+
/** request to set the segment separator with the segment ID field in row data
|
161
|
+
* @public
|
152
162
|
*/
|
153
|
-
RowSegmentingPlugin.prototype.
|
163
|
+
RowSegmentingPlugin.prototype.requestSeparatorRefresh = function () {
|
164
|
+
if(this._separatorRefreshConflator.conflate()) {
|
165
|
+
return;
|
166
|
+
}
|
167
|
+
this._refreshSegmentSeparator();
|
168
|
+
};
|
169
|
+
|
170
|
+
/** remove all segment separators then set the segment separator with the segment ID field in row data
|
171
|
+
* @private
|
172
|
+
*/
|
173
|
+
RowSegmentingPlugin.prototype._refreshSegmentSeparator = function () {
|
174
|
+
if(this._prevSegmentBySegmentId) { // Check only the segmentation set by the segment ID field and exclude the segment separator set by the runtime API using the setSegmentSeparator method
|
175
|
+
this._prevSegmentBySegmentId = false;
|
176
|
+
this.unsetAllSegmentSeparators();
|
177
|
+
}
|
154
178
|
var dv = this._getDataView();
|
155
179
|
if(dv) {
|
156
|
-
var
|
180
|
+
var dt = dv.getDataSource();
|
181
|
+
var rowIds = dt.getAllRowIds();
|
157
182
|
var rowCount = rowIds.length;
|
158
183
|
var separatorMapping = {};
|
159
184
|
for (var i = 0; i < rowCount; i++) {
|
160
185
|
var rowId = rowIds[i];
|
161
|
-
var rowData = this._rowGetter(
|
186
|
+
var rowData = this._rowGetter(dt.getRowData(rowId));
|
162
187
|
var segmentId = rowData[this._segmentIdField];
|
163
188
|
// TODO: supports collapsed and expanded for save/restore
|
164
189
|
|
@@ -169,8 +194,8 @@ RowSegmentingPlugin.prototype._afterInit = function () {
|
|
169
194
|
separatorMapping[segmentId] = rowId;
|
170
195
|
this.setSegmentSeparator(rowId);
|
171
196
|
}
|
197
|
+
this._prevSegmentBySegmentId = true;
|
172
198
|
}
|
173
|
-
|
174
199
|
}
|
175
200
|
}
|
176
201
|
};
|
@@ -184,6 +209,9 @@ RowSegmentingPlugin.prototype.unload = function (host) {
|
|
184
209
|
}
|
185
210
|
host.unlisten("preSectionDataBinding", this._onPreSectionDataBinding);
|
186
211
|
this._hosts.splice(at, 1);
|
212
|
+
if(this._hosts.length <= 0) {
|
213
|
+
this._separatorRefreshConflator.reset();
|
214
|
+
}
|
187
215
|
this._dispose();
|
188
216
|
};
|
189
217
|
|
@@ -233,6 +261,7 @@ RowSegmentingPlugin.prototype.config = function (options) {
|
|
233
261
|
this.addListener(option, "clicked");
|
234
262
|
this.addListener(option, "segmentSeparatorBinding");
|
235
263
|
this.addListener(option, "nonSegmentSeparatorBinding");
|
264
|
+
this.requestSeparatorRefresh();
|
236
265
|
};
|
237
266
|
|
238
267
|
/** @public
|
@@ -83,7 +83,8 @@ import { CoralItems } from "../../tr-grid-util/es6/CoralItems.js";
|
|
83
83
|
* @description Fired after the text editor has been closed and all operations are done. This is useful to clean up left over resource and get result text entered.
|
84
84
|
* @type {Object}
|
85
85
|
* @property {string=} text Text that user has entered
|
86
|
-
* @property {boolean=} groupHeader
|
86
|
+
* @property {boolean=} groupHeader This value is set to true if the editing row is a group header.
|
87
|
+
* @property {boolean=} segmentSeparator This value is set to true if the editing row is a segment separator.
|
87
88
|
* @property {Object} suggestionDetail Suggestion detail for auto suggest "item-select" event
|
88
89
|
* @property {boolean} cancelled Readonly flag. Indicates whether the commit operation has been cancelled
|
89
90
|
* @property {boolean} committed Readonly flag. The opposite of `cancelled` flag
|
@@ -94,7 +95,8 @@ import { CoralItems } from "../../tr-grid-util/es6/CoralItems.js";
|
|
94
95
|
* @type {Object}
|
95
96
|
* @property {string=} text Text that user has entered
|
96
97
|
* @property {boolean=} cancel Set to true to cancel the commit operation.
|
97
|
-
* @property {boolean=} groupHeader
|
98
|
+
* @property {boolean=} groupHeader This value is set to true if the editing row is a group header.
|
99
|
+
* @property {boolean=} segmentSeparator This value is set to true if the editing row is a segment separator.
|
98
100
|
* @property {Object} suggestionDetail Suggestion detail for auto suggest "item-select" event
|
99
101
|
* @example
|
100
102
|
* var cep = new InCellEditingPlugin();
|
@@ -1012,6 +1014,13 @@ InCellEditingPlugin.prototype._onDoubleClick = function (e, opt_host) {
|
|
1012
1014
|
} else if (sectionType === "header") {
|
1013
1015
|
return;
|
1014
1016
|
}
|
1017
|
+
var dataSource = arg["dataSource"];
|
1018
|
+
if (dataSource != null) {
|
1019
|
+
var rowId = dataSource.getRowId(arg["rowIndex"]);
|
1020
|
+
if (dataSource.getGroupByRowId(rowId)) {
|
1021
|
+
return;
|
1022
|
+
}
|
1023
|
+
}
|
1015
1024
|
|
1016
1025
|
// Initialize internal states
|
1017
1026
|
if (e["preventDefault"]) {
|
@@ -1069,7 +1078,8 @@ InCellEditingPlugin.prototype._openEditor = function (e, host, arg) {
|
|
1069
1078
|
var dataSource = arg["dataSource"];
|
1070
1079
|
if (dataSource != null) {
|
1071
1080
|
var rowId = arg["rowId"] = this._getRowId(arg["rowIndex"]);
|
1072
|
-
arg["
|
1081
|
+
arg["segmentSeparator"] = dataSource.isSegmentSeparator(rowId);
|
1082
|
+
arg["groupHeader"] = dataSource.getGroupByRowId(rowId);
|
1073
1083
|
arg["rowData"] = this._getRow(dataSource, rowId);
|
1074
1084
|
}
|
1075
1085
|
|
@@ -1,7 +1,8 @@
|
|
1
|
-
import {Ext} from
|
2
|
-
import {GridPlugin} from
|
3
|
-
import {FilterBuilder} from
|
4
|
-
import {
|
1
|
+
import {Ext} from "../../tr-grid-util/es6/Ext.js";
|
2
|
+
import {GridPlugin} from "../../tr-grid-util/es6/GridPlugin.js";
|
3
|
+
import {FilterBuilder} from "../../tr-grid-util/es6/FilterBuilder.js";
|
4
|
+
import {FilterOperators} from "../../tr-grid-util/es6/FilterOperators.js";
|
5
|
+
import {ElfUtil} from "../../tr-grid-util/es6/ElfUtil.js";
|
5
6
|
import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
|
6
7
|
|
7
8
|
declare namespace RowFilteringPlugin {
|
@@ -1,9 +1,10 @@
|
|
1
1
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
2
2
|
|
3
|
-
import { Ext } from
|
4
|
-
import { GridPlugin } from
|
5
|
-
import { FilterBuilder } from
|
6
|
-
import {
|
3
|
+
import { Ext } from "../../tr-grid-util/es6/Ext.js";
|
4
|
+
import { GridPlugin } from "../../tr-grid-util/es6/GridPlugin.js";
|
5
|
+
import { FilterBuilder } from "../../tr-grid-util/es6/FilterBuilder.js";
|
6
|
+
import { FilterOperators } from "../../tr-grid-util/es6/FilterOperators.js";
|
7
|
+
import { ElfUtil } from "../../tr-grid-util/es6/ElfUtil.js";
|
7
8
|
import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
|
8
9
|
/** @event RowFilteringPlugin#click
|
9
10
|
* @description click event is dispatched when a user clicks the column filter icon.
|
@@ -70,7 +71,7 @@ The expression can take various forms:<br>
|
|
70
71
|
* @description Extension column options that can be specified on each individual grid's column option:
|
71
72
|
* @property {RowFilteringPlugin~Expression=} filter An expression string or Function
|
72
73
|
* @property {*=} filterState Context object that will be passed as the third parameter for the filter logic
|
73
|
-
* @property {boolean=} filterIcon=true If disabled, filter icon will not be shown. This property only works with
|
74
|
+
* @property {boolean=} filterIcon=true If disabled, filter icon will not be shown. This property only works with "always" mode
|
74
75
|
*/
|
75
76
|
|
76
77
|
/** @typedef {Object} RowFilteringPlugin~FilterDialogOptions
|
@@ -121,6 +122,7 @@ var RowFilteringPlugin = function RowFilteringPlugin() {
|
|
121
122
|
t._onPreSectionRender = t._onPreSectionRender.bind(t);
|
122
123
|
t._onColumnAdded = t._onColumnAdded.bind(t);
|
123
124
|
t._onColumnRemoved = t._onColumnRemoved.bind(t);
|
125
|
+
t._onPreLoadedDialog = t._onPreLoadedDialog.bind(t);
|
124
126
|
t._onIconClicked = t._onIconClicked.bind(t);
|
125
127
|
t._filterLogic = t._filterLogic.bind(t);
|
126
128
|
t._updateAllColumnIcons = t._updateAllColumnIcons.bind(t);
|
@@ -219,6 +221,11 @@ RowFilteringPlugin.prototype._rowTransform = null;
|
|
219
221
|
*/
|
220
222
|
|
221
223
|
RowFilteringPlugin.prototype._filterDialog = null;
|
224
|
+
/** @type {boolean}
|
225
|
+
* @private
|
226
|
+
*/
|
227
|
+
|
228
|
+
RowFilteringPlugin.prototype._dialogInitialized = false;
|
222
229
|
/** @type {RowFilteringPlugin~FilterDialogOptions}
|
223
230
|
* @private
|
224
231
|
*/
|
@@ -229,6 +236,12 @@ RowFilteringPlugin.prototype._dialogOptions = null;
|
|
229
236
|
*/
|
230
237
|
|
231
238
|
RowFilteringPlugin._filterBuilder = null;
|
239
|
+
/** @type {string}
|
240
|
+
* @private
|
241
|
+
*/
|
242
|
+
|
243
|
+
RowFilteringPlugin._dialogTagName; // intentionally left undefined
|
244
|
+
|
232
245
|
/** Array of DataView objects
|
233
246
|
* @type {!Array.<Object>}
|
234
247
|
* @private
|
@@ -292,8 +305,50 @@ RowFilteringPlugin.prototype.unload = function (host) {
|
|
292
305
|
host.unlisten("columnAdded", this._onColumnAdded);
|
293
306
|
host.unlisten("columnRemoved", this._onColumnRemoved);
|
294
307
|
|
308
|
+
if (!this._hosts.length) {
|
309
|
+
if (this._filterDialog) {
|
310
|
+
this._filterDialog.hide(); // Remove the dialog from document
|
311
|
+
|
312
|
+
|
313
|
+
this._filterDialog = null;
|
314
|
+
this._dialogInitialized = false;
|
315
|
+
}
|
316
|
+
}
|
317
|
+
|
295
318
|
this._dispose();
|
296
319
|
};
|
320
|
+
/**
|
321
|
+
* @protected
|
322
|
+
* @ignore
|
323
|
+
*/
|
324
|
+
|
325
|
+
|
326
|
+
RowFilteringPlugin.prototype._afterInit = function () {
|
327
|
+
if (!this._filterDialog) {
|
328
|
+
this._filterDialog = RowFilteringPlugin._createDialog();
|
329
|
+
this._dialogInitialized = false;
|
330
|
+
|
331
|
+
if (this._filterDialog) {
|
332
|
+
this._filterDialog.style.display = "none";
|
333
|
+
document.body.appendChild(this._filterDialog);
|
334
|
+
setTimeout(this._onPreLoadedDialog, 10);
|
335
|
+
}
|
336
|
+
}
|
337
|
+
};
|
338
|
+
/** @private
|
339
|
+
*/
|
340
|
+
|
341
|
+
|
342
|
+
RowFilteringPlugin.prototype._onPreLoadedDialog = function () {
|
343
|
+
if (this._filterDialog) {
|
344
|
+
this._filterDialog.style.display = "";
|
345
|
+
var pn = this._filterDialog.parentNode;
|
346
|
+
|
347
|
+
if (pn) {
|
348
|
+
pn.removeChild(this._filterDialog);
|
349
|
+
}
|
350
|
+
}
|
351
|
+
};
|
297
352
|
/** @public
|
298
353
|
* @param {Object=} options
|
299
354
|
*/
|
@@ -881,10 +936,10 @@ RowFilteringPlugin.prototype._removeColumnFilters = function (colIndex) {
|
|
881
936
|
this._setColumnFilterOption(colIndex, null); // filterChanged fired
|
882
937
|
|
883
938
|
|
884
|
-
var inputExt = this._getPlugin(
|
939
|
+
var inputExt = this._getPlugin("FilterInputPlugin"); // TODO: Use the event instead
|
885
940
|
|
886
941
|
|
887
|
-
inputExt && inputExt.updateUI(colIndex,
|
942
|
+
inputExt && inputExt.updateUI(colIndex, "");
|
888
943
|
|
889
944
|
this._requestFilterRefresh();
|
890
945
|
}
|
@@ -909,7 +964,7 @@ RowFilteringPlugin.prototype.removeAllColumnFilters = function () {
|
|
909
964
|
if (this._columnFilters.length) {
|
910
965
|
this._columnFilters.length = 0;
|
911
966
|
|
912
|
-
var inputExt = this._getPlugin(
|
967
|
+
var inputExt = this._getPlugin("FilterInputPlugin");
|
913
968
|
|
914
969
|
var colCount = this._getColumnCount();
|
915
970
|
|
@@ -917,7 +972,7 @@ RowFilteringPlugin.prototype.removeAllColumnFilters = function () {
|
|
917
972
|
this._setColumnFilterOption(i, null); // filterChanged fired
|
918
973
|
|
919
974
|
|
920
|
-
inputExt && inputExt.updateUI(i,
|
975
|
+
inputExt && inputExt.updateUI(i, ""); // TODO: Use the event instead
|
921
976
|
}
|
922
977
|
|
923
978
|
this._updateAllColumnIcons();
|
@@ -1598,6 +1653,29 @@ RowFilteringPlugin.prototype.getUniqueValues = function (field, formatter, fmtFi
|
|
1598
1653
|
|
1599
1654
|
return uniqueValues;
|
1600
1655
|
};
|
1656
|
+
/** @private
|
1657
|
+
* @function
|
1658
|
+
* @returns {Element}
|
1659
|
+
*/
|
1660
|
+
|
1661
|
+
|
1662
|
+
RowFilteringPlugin._createDialog = function () {
|
1663
|
+
var tag = RowFilteringPlugin._dialogTagName;
|
1664
|
+
|
1665
|
+
if (tag == null) {
|
1666
|
+
var dialogVersion = ElfUtil.hasComponent("filter-dialog"); // WARNING: this cannot detect version 2 or less
|
1667
|
+
|
1668
|
+
if (dialogVersion) {
|
1669
|
+
RowFilteringPlugin._dialogTagName = dialogVersion >= 3 ? "filter-dialog" : "tr-grid-filter-dialog";
|
1670
|
+
} else {
|
1671
|
+
RowFilteringPlugin._dialogTagName = "";
|
1672
|
+
}
|
1673
|
+
|
1674
|
+
tag = RowFilteringPlugin._dialogTagName;
|
1675
|
+
}
|
1676
|
+
|
1677
|
+
return tag ? document.createElement(tag) : null;
|
1678
|
+
};
|
1601
1679
|
/** @public
|
1602
1680
|
* @param {number} colIndex
|
1603
1681
|
* @param {RowFilteringPlugin~FilterDialogOptions=} runtimeDialogOptions
|
@@ -1607,28 +1685,27 @@ RowFilteringPlugin.prototype.getUniqueValues = function (field, formatter, fmtFi
|
|
1607
1685
|
RowFilteringPlugin.prototype.openDialog = function (colIndex, runtimeDialogOptions) {
|
1608
1686
|
var stp = this._getPlugin("SortableTitlePlugin");
|
1609
1687
|
|
1610
|
-
if (!this._filterDialog) {
|
1611
|
-
|
1612
|
-
|
1613
|
-
|
1614
|
-
if (!dialogVersion) {
|
1615
|
-
console.log("Filter dialog doesn't exist");
|
1616
|
-
return;
|
1688
|
+
if (!this._filterDialog || !this._dialogInitialized) {
|
1689
|
+
if (!this._filterDialog) {
|
1690
|
+
this._filterDialog = RowFilteringPlugin._createDialog();
|
1617
1691
|
}
|
1618
1692
|
|
1619
|
-
if (
|
1620
|
-
this.
|
1621
|
-
} else if (dialogVersion < 2) {
|
1622
|
-
this._filterDialog = document.createElement("tr-grid-filter-dialog");
|
1623
|
-
}
|
1693
|
+
if (this._filterDialog) {
|
1694
|
+
this._dialogInitialized = true;
|
1624
1695
|
|
1625
|
-
|
1626
|
-
|
1627
|
-
|
1628
|
-
|
1696
|
+
if (!stp) {
|
1697
|
+
this._filterDialog.hideSortUI();
|
1698
|
+
} else {
|
1699
|
+
this._filterDialog.addEventListener("sortChanged", this._onDialogSortChanged.bind(this));
|
1700
|
+
}
|
1701
|
+
|
1702
|
+
this._filterDialog.addEventListener("filterChanged", this._onDialogFilterChanged.bind(this));
|
1629
1703
|
}
|
1704
|
+
}
|
1630
1705
|
|
1631
|
-
|
1706
|
+
if (!this._filterDialog) {
|
1707
|
+
console.log("Filter dialog does not exist");
|
1708
|
+
return;
|
1632
1709
|
}
|
1633
1710
|
|
1634
1711
|
if (this._filterDialog.isShown) {
|
@@ -1920,12 +1997,16 @@ RowFilteringPlugin.prototype._onDialogFilterChanged = function (e) {
|
|
1920
1997
|
|
1921
1998
|
for (var m = 0; m < condCount; ++m) {
|
1922
1999
|
var cond = conditions[m];
|
1923
|
-
var
|
2000
|
+
var opDef = FilterOperators[cond[0]]; // string type has no need for formatted data or raw data. What is in display is the most important
|
1924
2001
|
|
1925
|
-
|
2002
|
+
if (opDef && opDef.type !== "string") {
|
2003
|
+
var inputVal = cond[1]; // inputVal is hardcoded at index 1
|
1926
2004
|
|
1927
|
-
|
1928
|
-
|
2005
|
+
var rawValues = uniqueValues[inputVal];
|
2006
|
+
|
2007
|
+
if (rawValues != null) {
|
2008
|
+
cond[1] = rawValues[0];
|
2009
|
+
}
|
1929
2010
|
}
|
1930
2011
|
}
|
1931
2012
|
|
@@ -399,7 +399,6 @@ RowGroupingPlugin.prototype.initialize = function (host, options) {
|
|
399
399
|
this._hosts.push(host);
|
400
400
|
|
401
401
|
ExpanderIcon.loadExpanderStyles();
|
402
|
-
ExpanderIcon.injectExpanderStyles(host.getElement());
|
403
402
|
|
404
403
|
host.unloadPlugin("CollapsibleHeaderPlugin");
|
405
404
|
host.listen("columnMoved", this._onColumnIndexChanged);
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import { Ext } from "./Ext.js";
|
2
|
-
import { injectCss, prettifyCss } from "./Util.js";
|
3
2
|
import { ElementWrapper } from "./ElementWrapper.js";
|
4
3
|
import { ElfUtil } from "./ElfUtil.js";
|
5
4
|
|
@@ -9,8 +8,6 @@ declare class ExpanderIcon extends ElementWrapper {
|
|
9
8
|
|
10
9
|
public static loadExpanderStyles(): void;
|
11
10
|
|
12
|
-
public static injectExpanderStyles(elem: Element|null): void;
|
13
|
-
|
14
11
|
public expand(): void;
|
15
12
|
|
16
13
|
public collapse(): void;
|
@@ -1,9 +1,7 @@
|
|
1
1
|
import { Ext } from "./Ext.js";
|
2
|
-
import { injectCss, prettifyCss } from "./Util.js";
|
3
2
|
import { ElementWrapper } from "./ElementWrapper.js";
|
4
3
|
import { ElfUtil } from "./ElfUtil.js";
|
5
4
|
|
6
|
-
|
7
5
|
/**
|
8
6
|
* @constructor
|
9
7
|
* @extends {ElementWrapper}
|
@@ -33,44 +31,6 @@ Ext.inherits(ExpanderIcon, ElementWrapper);
|
|
33
31
|
*/
|
34
32
|
ExpanderIcon._iconName = ""; // static variable
|
35
33
|
|
36
|
-
/** @description .expander is the actual arrow <br>
|
37
|
-
* .folder is an element hosting .expander arrow
|
38
|
-
* @type {string}
|
39
|
-
* @private
|
40
|
-
*/
|
41
|
-
ExpanderIcon._styles = prettifyCss([
|
42
|
-
".tr-grid.expander-disabled .expander", [
|
43
|
-
"cursor: default;"
|
44
|
-
],
|
45
|
-
".tr-grid.folder-disabled .cell.folder", [
|
46
|
-
"cursor: default;"
|
47
|
-
],
|
48
|
-
".tr-grid .expander", [
|
49
|
-
"cursor: pointer;",
|
50
|
-
"display: inline-block;" // For transformation
|
51
|
-
],
|
52
|
-
".tr-grid .folder .expander:before", [
|
53
|
-
"content: none !important;" // Prevent deprecated styling
|
54
|
-
],
|
55
|
-
".tr-grid .fallback-arrow", [
|
56
|
-
"vertical-align: middle;",
|
57
|
-
"font-size: 7px;",
|
58
|
-
"line-height: 1;",
|
59
|
-
"display: inline-block;", // For transformation
|
60
|
-
"transform: scaleX(1.5);",
|
61
|
-
"font-family: Arial;"
|
62
|
-
],
|
63
|
-
".tr-grid .expander.closed", [
|
64
|
-
"transform: translate(0px, -1px) rotate(-90deg);"
|
65
|
-
],
|
66
|
-
".tr-grid .cell.closed .expander", [
|
67
|
-
"transform: translate(0px, -1px) rotate(-90deg);"
|
68
|
-
],
|
69
|
-
".tr-grid .tr-lg .cell.folder.content-header", [ // Used for header row in contentAsHeader mode, espectially with solar theme
|
70
|
-
"background-color: inherit;"
|
71
|
-
]
|
72
|
-
]);
|
73
|
-
|
74
34
|
/** @private
|
75
35
|
* @param {Event} e
|
76
36
|
*/
|
@@ -98,15 +58,6 @@ ExpanderIcon.loadExpanderStyles = function() {
|
|
98
58
|
}
|
99
59
|
}
|
100
60
|
};
|
101
|
-
/** @public
|
102
|
-
* @param {Element} elem
|
103
|
-
*/
|
104
|
-
ExpanderIcon.injectExpanderStyles = function(elem) {
|
105
|
-
if(elem && elem.nodeType === 1 && !elem._expanderStyles) {
|
106
|
-
elem._expanderStyles = true; // Prevent loading the same style twice
|
107
|
-
injectCss(ExpanderIcon._styles, elem);
|
108
|
-
}
|
109
|
-
};
|
110
61
|
|
111
62
|
/** @private
|
112
63
|
* @param {Object} cell
|
@@ -432,8 +432,6 @@ FilterBuilder.prototype.buildFilter = function() {
|
|
432
432
|
}
|
433
433
|
|
434
434
|
// Prepare user value to be in ready to use form to boost performance
|
435
|
-
var fieldName = this._fieldName;
|
436
|
-
var fmtFieldName = this._formattedFieldName;
|
437
435
|
var formatter = this._formatter;
|
438
436
|
var conds = this._conditions.slice();
|
439
437
|
for(var i = 0; i < condCount; ++i) {
|
@@ -456,12 +454,7 @@ FilterBuilder.prototype.buildFilter = function() {
|
|
456
454
|
cond.useUTCTime != null ? cond.useUTCTime : this._useUTCTime
|
457
455
|
);
|
458
456
|
} else if(opType === "string") {
|
459
|
-
|
460
|
-
var dummyRow = {};
|
461
|
-
dummyRow[fieldName] = value;
|
462
|
-
dummyRow[fmtFieldName] = value;
|
463
|
-
value = formatter(dummyRow); // WARNING: dummyRow may not provide enough data for formatting correctly
|
464
|
-
}
|
457
|
+
// There is no need to format user input in the user condition
|
465
458
|
value = convertToString(value);
|
466
459
|
if(!opDef.caseSensitive) {
|
467
460
|
value = value.toLowerCase();
|
@@ -120,6 +120,36 @@ RowPainter._styles = prettifyCss([
|
|
120
120
|
"--grid-expanded-tag-bg-color: #4D4D4D;",
|
121
121
|
"--grid-row-menu-icon-color: #CCCCCC;",
|
122
122
|
"--grid-row-menu-icon-hover-color: #FFFFFF;"
|
123
|
+
],
|
124
|
+
".tr-grid.expander-disabled .expander", [
|
125
|
+
"cursor: default;"
|
126
|
+
],
|
127
|
+
".tr-grid.folder-disabled .cell.folder", [
|
128
|
+
"cursor: default;"
|
129
|
+
],
|
130
|
+
".tr-grid .expander", [
|
131
|
+
"cursor: pointer;",
|
132
|
+
"display: inline-block;" // For transformation
|
133
|
+
],
|
134
|
+
".tr-grid .folder .expander:before", [
|
135
|
+
"content: none !important;" // Prevent deprecated styling
|
136
|
+
],
|
137
|
+
".tr-grid .fallback-arrow", [
|
138
|
+
"vertical-align: middle;",
|
139
|
+
"font-size: 7px;",
|
140
|
+
"line-height: 1;",
|
141
|
+
"display: inline-block;", // For transformation
|
142
|
+
"transform: scaleX(1.5);",
|
143
|
+
"font-family: Arial;"
|
144
|
+
],
|
145
|
+
".tr-grid .expander.closed", [
|
146
|
+
"transform: translate(0px, -1px) rotate(-90deg);"
|
147
|
+
],
|
148
|
+
".tr-grid .cell.closed .expander", [
|
149
|
+
"transform: translate(0px, -1px) rotate(-90deg);"
|
150
|
+
],
|
151
|
+
".tr-grid .tr-lg .cell.folder.content-header", [ // Used for header row in contentAsHeader mode, espectially with solar theme
|
152
|
+
"background-color: inherit;"
|
123
153
|
]
|
124
154
|
]);
|
125
155
|
|
@@ -1,7 +1,8 @@
|
|
1
|
-
import {Ext} from
|
2
|
-
import {GridPlugin} from
|
3
|
-
import {FilterBuilder} from
|
4
|
-
import {
|
1
|
+
import {Ext} from "../../tr-grid-util/es6/Ext.js";
|
2
|
+
import {GridPlugin} from "../../tr-grid-util/es6/GridPlugin.js";
|
3
|
+
import {FilterBuilder} from "../../tr-grid-util/es6/FilterBuilder.js";
|
4
|
+
import {FilterOperators} from "../../tr-grid-util/es6/FilterOperators.js";
|
5
|
+
import {ElfUtil} from "../../tr-grid-util/es6/ElfUtil.js";
|
5
6
|
import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
|
6
7
|
|
7
8
|
declare namespace RowFilteringPlugin {
|
@@ -4,6 +4,7 @@ import { ExpanderIcon } from "../../tr-grid-util/es6/ExpanderIcon.js";
|
|
4
4
|
import { ElfUtil } from "../../tr-grid-util/es6/ElfUtil.js";
|
5
5
|
import { RowPainter } from "../../tr-grid-util/es6/RowPainter.js";
|
6
6
|
import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
|
7
|
+
import { Conflator } from "../../tr-grid-util/es6/Conflator.js";
|
7
8
|
|
8
9
|
declare namespace RowSegmentingPlugin {
|
9
10
|
|
@@ -33,6 +34,8 @@ declare class RowSegmentingPlugin extends GridPlugin {
|
|
33
34
|
|
34
35
|
public initialize(host: any, options?: any): void;
|
35
36
|
|
37
|
+
public requestSeparatorRefresh(): void;
|
38
|
+
|
36
39
|
public unload(host?: any): void;
|
37
40
|
|
38
41
|
public config(options?: any): void;
|
package/lib/versions.json
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"tr-grid-util": "1.3.
|
2
|
+
"tr-grid-util": "1.3.130",
|
3
3
|
"tr-grid-printer": "1.0.16",
|
4
4
|
"@grid/column-dragging": "1.0.14",
|
5
|
-
"@grid/row-segmenting": "1.0.
|
5
|
+
"@grid/row-segmenting": "1.0.28",
|
6
6
|
"@grid/statistics-row": "1.0.15",
|
7
7
|
"@grid/zoom": "1.0.11",
|
8
8
|
"tr-grid-auto-tooltip": "1.1.6",
|
@@ -19,13 +19,13 @@
|
|
19
19
|
"tr-grid-contextmenu": "1.0.39",
|
20
20
|
"tr-grid-filter-input": "0.9.33",
|
21
21
|
"tr-grid-heat-map": "1.0.29",
|
22
|
-
"tr-grid-in-cell-editing": "1.0.
|
22
|
+
"tr-grid-in-cell-editing": "1.0.80",
|
23
23
|
"tr-grid-pagination": "1.0.24",
|
24
24
|
"tr-grid-percent-bar": "1.0.22",
|
25
25
|
"tr-grid-range-bar": "2.0.5",
|
26
26
|
"tr-grid-row-dragging": "1.0.29",
|
27
|
-
"tr-grid-row-filtering": "1.0.
|
28
|
-
"tr-grid-row-grouping": "1.0.
|
27
|
+
"tr-grid-row-filtering": "1.0.59",
|
28
|
+
"tr-grid-row-grouping": "1.0.82",
|
29
29
|
"tr-grid-row-selection": "1.0.23",
|
30
30
|
"tr-grid-rowcoloring": "1.0.24",
|
31
31
|
"tr-grid-textformatting": "1.0.46",
|
package/package.json
CHANGED