@refinitiv-ui/efx-grid 6.0.29 → 6.0.31
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/core/dist/core.js +20 -2
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/grid/Core.js +1 -1
- package/lib/core/es6/grid/components/Scrollbar.js +19 -1
- package/lib/filter-dialog/lib/filter-dialog.js +11 -8
- package/lib/filter-dialog/themes/base.less +7 -3
- package/lib/filter-dialog/themes/elemental/dark/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/elemental/dark/filter-dialog.js +1 -1
- package/lib/filter-dialog/themes/elemental/light/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/elemental/light/filter-dialog.js +1 -1
- package/lib/filter-dialog/themes/halo/dark/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/halo/dark/filter-dialog.js +1 -1
- package/lib/filter-dialog/themes/halo/light/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/halo/light/filter-dialog.js +1 -1
- package/lib/filter-dialog/themes/solar/charcoal/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/solar/charcoal/filter-dialog.js +1 -1
- package/lib/filter-dialog/themes/solar/pearl/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/solar/pearl/filter-dialog.js +1 -1
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +142 -26
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/ColumnDefinition.d.ts +2 -0
- package/lib/rt-grid/es6/ColumnDefinition.js +6 -0
- package/lib/rt-grid/es6/FieldDefinition.d.ts +4 -0
- package/lib/rt-grid/es6/FieldDefinition.js +27 -1
- package/lib/rt-grid/es6/Grid.d.ts +1 -0
- package/lib/rt-grid/es6/Grid.js +14 -0
- package/lib/rt-grid/es6/RowDefinition.d.ts +1 -1
- package/lib/rt-grid/es6/RowDefinition.js +7 -7
- package/lib/rt-grid/es6/SnapshotFiller.js +3 -0
- package/lib/tr-grid-column-stack/es6/ColumnStack.js +4 -0
- package/lib/tr-grid-content-wrap/es6/ContentWrap.d.ts +4 -4
- package/lib/tr-grid-content-wrap/es6/ContentWrap.js +116 -70
- package/lib/tr-grid-util/es6/DragUI.d.ts +2 -0
- package/lib/tr-grid-util/es6/DragUI.js +39 -9
- package/lib/tr-grid-util/es6/Popup.d.ts +3 -1
- package/lib/tr-grid-util/es6/Popup.js +57 -23
- package/lib/tr-grid-util/es6/jet/mockDataAPI.js +29 -1
- package/lib/types/es6/ConditionalColoring.d.ts +30 -23
- package/lib/types/es6/ContentWrap.d.ts +4 -4
- package/lib/types/es6/ExtensionOptions.d.ts +2 -0
- package/lib/types/es6/RealtimeGrid/ColumnDefinition.d.ts +2 -0
- package/lib/types/es6/RealtimeGrid/FieldDefinition.d.ts +4 -0
- package/lib/types/es6/RealtimeGrid/Grid.d.ts +1 -0
- package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +1 -1
- package/lib/versions.json +4 -4
- package/package.json +1 -1
@@ -590,6 +590,12 @@ ColumnDefinition.prototype.isTimeSeries = function() {
|
|
590
590
|
/** @public
|
591
591
|
* @return {boolean}
|
592
592
|
*/
|
593
|
+
ColumnDefinition.prototype.isTimeSeriesChild = function() {
|
594
|
+
return FieldDefinition.isTimeSeriesChild(this.getField());
|
595
|
+
};
|
596
|
+
/** @public
|
597
|
+
* @return {boolean}
|
598
|
+
*/
|
593
599
|
ColumnDefinition.prototype.isFormulaField = function() {
|
594
600
|
return this._formula ? true : false;
|
595
601
|
};
|
@@ -20,12 +20,16 @@ declare namespace FieldDefinition {
|
|
20
20
|
|
21
21
|
function setFieldCaching(caching: boolean): void;
|
22
22
|
|
23
|
+
function disableTimeSeriesExpansion(disabled: boolean): void;
|
24
|
+
|
23
25
|
function isFormula(field: string): boolean;
|
24
26
|
|
25
27
|
function isAdc(field: string): boolean;
|
26
28
|
|
27
29
|
function isRealTimeField(field: string): boolean;
|
28
30
|
|
31
|
+
function isTimeSeriesChild(field: string): boolean;
|
32
|
+
|
29
33
|
function isTimeSeries(field: string): boolean;
|
30
34
|
|
31
35
|
}
|
@@ -182,6 +182,11 @@ FieldDefinition._lang = 'en';
|
|
182
182
|
* @private
|
183
183
|
*/
|
184
184
|
FieldDefinition._caching = false;
|
185
|
+
/**
|
186
|
+
* @type {boolean}
|
187
|
+
* @private
|
188
|
+
*/
|
189
|
+
FieldDefinition._timeSeriesExpansion = true;
|
185
190
|
|
186
191
|
/**
|
187
192
|
* @type {Object.<string, boolean>}
|
@@ -269,6 +274,14 @@ FieldDefinition.setFieldCaching = function (caching) {
|
|
269
274
|
FieldDefinition._caching = caching;
|
270
275
|
};
|
271
276
|
|
277
|
+
/** @public
|
278
|
+
* @function
|
279
|
+
* @param {boolean} disabled=true if disable it, time series will not be expand
|
280
|
+
*/
|
281
|
+
FieldDefinition.disableTimeSeriesExpansion = function(disabled) {
|
282
|
+
FieldDefinition._timeSeriesExpansion = disabled != false ? false : true;
|
283
|
+
};
|
284
|
+
|
272
285
|
/** @public
|
273
286
|
* @param {string} field
|
274
287
|
* @return {boolean}
|
@@ -301,7 +314,7 @@ FieldDefinition.isRealTimeField = function(field) {
|
|
301
314
|
return false;
|
302
315
|
}
|
303
316
|
|
304
|
-
if(FieldDefinition.
|
317
|
+
if(FieldDefinition.isTimeSeriesChild(field)) {
|
305
318
|
return false;
|
306
319
|
}
|
307
320
|
|
@@ -312,6 +325,14 @@ FieldDefinition.isRealTimeField = function(field) {
|
|
312
325
|
return FieldDefinition.getFieldProperty(field, "IsRealtimeField") !== false;
|
313
326
|
};
|
314
327
|
|
328
|
+
/** @public
|
329
|
+
* @param {string} field
|
330
|
+
* @return {boolean}
|
331
|
+
*/
|
332
|
+
FieldDefinition.isTimeSeriesChild = function(field) {
|
333
|
+
return FieldDefinition.getFieldProperty(field, "timeSeriesChild") ? true : false;
|
334
|
+
};
|
335
|
+
|
315
336
|
/** @public
|
316
337
|
* @param {string} field
|
317
338
|
* @return {boolean}=true if field is time series field
|
@@ -321,6 +342,11 @@ FieldDefinition.isTimeSeries = function (field) {
|
|
321
342
|
return false;
|
322
343
|
}
|
323
344
|
|
345
|
+
// If we disable time series expansion, the grid won't have a time series field.
|
346
|
+
if(!FieldDefinition._timeSeriesExpansion) {
|
347
|
+
return false;
|
348
|
+
}
|
349
|
+
|
324
350
|
// We can check time series using a cache to avoid duplicating checks in regular expressions.
|
325
351
|
var timeSeriesField = FieldDefinition.getFieldProperty(field, "timeSeries");
|
326
352
|
if (timeSeriesField != null) {
|
package/lib/rt-grid/es6/Grid.js
CHANGED
@@ -84,6 +84,7 @@ import { ElementWrapper } from "../../core/es6/grid/components/ElementWrapper.js
|
|
84
84
|
* @property {boolean=} formulaEngine=false If enabled, field with leading equal sign will be treated as a formula and rows will be filled with the calculated values.
|
85
85
|
* @property {number=} adcPollingInterval=0 Length of polling interval for refreshing ADC data in milliseconds. The default value (0) means no polling.
|
86
86
|
* @property {boolean=} fieldCaching=false If enabled, field definition will be caching internal mechanism
|
87
|
+
* @property {boolean=} timeSeriesExpansion=true If disabled, the time series field will be treated as a normal field and not expanded.
|
87
88
|
* @property {string=} childDataField=CHILD_VALUES The given field will be used to store children's static data, such as row color assignment.
|
88
89
|
* @property {boolean=} topSection=true If disabled, title section will not be rendered
|
89
90
|
*/
|
@@ -530,6 +531,11 @@ Grid.prototype._pollingEnabled = true;
|
|
530
531
|
* @private
|
531
532
|
*/
|
532
533
|
Grid.prototype._fieldCaching = false;
|
534
|
+
/** @type {boolean}
|
535
|
+
* @private
|
536
|
+
*/
|
537
|
+
Grid.prototype._timeSeriesExpansion = true;
|
538
|
+
|
533
539
|
/** @type {string}
|
534
540
|
* @private
|
535
541
|
*/
|
@@ -790,6 +796,11 @@ Grid.prototype.initialize = function(gridOption) {
|
|
790
796
|
FieldDefinition.setFieldCaching(t._fieldCaching);
|
791
797
|
}
|
792
798
|
|
799
|
+
if(gridOption["timeSeriesExpansion"] != null) {
|
800
|
+
t._timeSeriesExpansion = gridOption["timeSeriesExpansion"];
|
801
|
+
FieldDefinition.disableTimeSeriesExpansion(!t._timeSeriesExpansion);
|
802
|
+
}
|
803
|
+
|
793
804
|
if (gridOption["icons"] && gridOption["icons"]["rowGrouping"] && gridOption["icons"]["rowGrouping"]["expander"]) {
|
794
805
|
StyleLoader.chainIcon = gridOption["icons"]["rowGrouping"]["expander"];
|
795
806
|
}
|
@@ -1112,6 +1123,9 @@ Grid.prototype.getConfigObject = function (gridOptions) {
|
|
1112
1123
|
if(this._fieldCaching) {
|
1113
1124
|
obj["fieldCaching"] = this._fieldCaching;
|
1114
1125
|
}
|
1126
|
+
if(this._timeSeriesExpansion != true) {
|
1127
|
+
obj["timeSeriesExpansion"] = this._timeSeriesExpansion;
|
1128
|
+
}
|
1115
1129
|
|
1116
1130
|
if(this._childDataField) {
|
1117
1131
|
obj["childDataField"] = this._childDataField;
|
@@ -17,12 +17,12 @@ import { DataTable } from "../../core/es6/data/DataTable.js";
|
|
17
17
|
*/
|
18
18
|
|
19
19
|
/** @typedef {Object} RowDefinition~RowTypes
|
20
|
-
* @property {string} CONTENT="CONTENT"
|
21
|
-
* @property {string} CHAIN="CHAIN"
|
22
|
-
* @property {string} CONSTITUENT="CONSTITUENT"
|
23
|
-
* @property {string} GROUP_HEADER="GROUP_HEADER"
|
24
|
-
* @property {string} SUBGROUP_HEADER="SUBGROUP_HEADER"
|
25
|
-
* @property {string} GROUP_MEMBER="GROUP_MEMBER"
|
20
|
+
* @property {string} CONTENT="CONTENT" Regular row
|
21
|
+
* @property {string} CHAIN="CHAIN" Chain RIC row
|
22
|
+
* @property {string} CONSTITUENT="CONSTITUENT" Constituent row
|
23
|
+
* @property {string} GROUP_HEADER="GROUP_HEADER" Row of segment separator at the very top
|
24
|
+
* @property {string} SUBGROUP_HEADER="SUBGROUP_HEADER" Row of nested segment separator
|
25
|
+
* @property {string} GROUP_MEMBER="GROUP_MEMBER" Child row displayed under segment separator
|
26
26
|
*/
|
27
27
|
|
28
28
|
/** @type {string}
|
@@ -31,7 +31,7 @@ import { DataTable } from "../../core/es6/data/DataTable.js";
|
|
31
31
|
*/
|
32
32
|
var ROW_DEF = "ROW_DEF";
|
33
33
|
|
34
|
-
/** @type {RowDefinition~RowTypes}
|
34
|
+
/** @type {!RowDefinition~RowTypes}
|
35
35
|
* @public
|
36
36
|
* @const
|
37
37
|
*/
|
@@ -381,6 +381,9 @@ SnapshotFiller.prototype._onRTKSuccess = function (fields, serverResult) {
|
|
381
381
|
var dataRow = data2D[i];
|
382
382
|
ric = dataRow[0];
|
383
383
|
|
384
|
+
if (ricMap[ric]) {
|
385
|
+
continue; // we interested only first row of ric
|
386
|
+
}
|
384
387
|
var snapData = ricMap[ric] = {};
|
385
388
|
|
386
389
|
// loop for create rowData for update
|
@@ -1311,6 +1311,10 @@ ColumnStackPlugin.prototype._onColumnRemoved = function (e) {
|
|
1311
1311
|
} else {
|
1312
1312
|
stackOpt.activeColumn = stackOpt.stackRefs[0];
|
1313
1313
|
}
|
1314
|
+
|
1315
|
+
// TODO: Add a proper way to set visibility to activeColumn when activeColumn is changed
|
1316
|
+
var activeColIndex = this._getColumnIndex(stackOpt.activeColumn);
|
1317
|
+
this._setColumnVisibility(activeColIndex, true);
|
1314
1318
|
this._updateUI();
|
1315
1319
|
}
|
1316
1320
|
}
|
@@ -4,11 +4,11 @@ import { GridPlugin } from '../../tr-grid-util/es6/GridPlugin.js';
|
|
4
4
|
declare namespace ContentWrapPlugin {
|
5
5
|
|
6
6
|
type Options = {
|
7
|
-
evenRowHeight?: boolean
|
7
|
+
evenRowHeight?: boolean|null
|
8
8
|
};
|
9
9
|
|
10
10
|
type ColumnOptions = {
|
11
|
-
contentWrap?: boolean
|
11
|
+
contentWrap?: boolean|null
|
12
12
|
};
|
13
13
|
|
14
14
|
}
|
@@ -29,11 +29,11 @@ declare class ContentWrapPlugin extends GridPlugin {
|
|
29
29
|
|
30
30
|
public getConfigObject(gridOptions?: any): any;
|
31
31
|
|
32
|
-
public adjustRowHeight(sectionRef: any, from?: number, to?: number): boolean;
|
32
|
+
public adjustRowHeight(sectionRef: any, from?: number|null, to?: number|null): boolean;
|
33
33
|
|
34
34
|
public adjustRowHeightAt(sectionRef: any, rowIndex: number): boolean;
|
35
35
|
|
36
|
-
public enableContentWrapping(colIndex: number, bool?: boolean): void;
|
36
|
+
public enableContentWrapping(colIndex: number, bool?: boolean|null): void;
|
37
37
|
|
38
38
|
public isWrappingContent(colIndex: number): boolean;
|
39
39
|
|
@@ -17,7 +17,7 @@ import { GridPlugin } from '../../tr-grid-util/es6/GridPlugin.js';
|
|
17
17
|
var ContentWrapPlugin = function ContentWrapPlugin() {
|
18
18
|
this._onColumnAdded = this._onColumnAdded.bind(this);
|
19
19
|
this._onRecalculation = this._onRecalculation.bind(this);
|
20
|
-
this.
|
20
|
+
this._requestRecalculation = this._requestRecalculation.bind(this);
|
21
21
|
this._hosts = [];
|
22
22
|
};
|
23
23
|
|
@@ -77,10 +77,10 @@ ContentWrapPlugin.prototype.initialize = function (host, options) {
|
|
77
77
|
|
78
78
|
this._hosts.push(host);
|
79
79
|
|
80
|
-
window.addEventListener("load", this.
|
80
|
+
window.addEventListener("load", this._requestRecalculation); // Since CSS can impact font, we need adjust accordingly
|
81
81
|
|
82
|
-
host.listen("widthChanged", this.
|
83
|
-
host.listen("postSectionDataBinding", this.
|
82
|
+
host.listen("widthChanged", this._requestRecalculation);
|
83
|
+
host.listen("postSectionDataBinding", this._requestRecalculation); // In case of lazy loading
|
84
84
|
|
85
85
|
this.config(options);
|
86
86
|
host.listen("columnAdded", this._onColumnAdded);
|
@@ -99,11 +99,13 @@ ContentWrapPlugin.prototype.unload = function (host) {
|
|
99
99
|
|
100
100
|
this._hosts.splice(at, 1);
|
101
101
|
|
102
|
-
window.removeEventListener("load", this.
|
103
|
-
host.unlisten("widthChanged", this.
|
104
|
-
host.unlisten("postSectionDataBinding", this.
|
102
|
+
window.removeEventListener("load", this._requestRecalculation);
|
103
|
+
host.unlisten("widthChanged", this._requestRecalculation);
|
104
|
+
host.unlisten("postSectionDataBinding", this._requestRecalculation);
|
105
105
|
host.unlisten("columnAdded", this._onColumnAdded);
|
106
106
|
|
107
|
+
this._dispose();
|
108
|
+
|
107
109
|
this._clearTimer();
|
108
110
|
};
|
109
111
|
/** @public
|
@@ -182,7 +184,7 @@ ContentWrapPlugin.prototype.getConfigObject = function (gridOptions) {
|
|
182
184
|
|
183
185
|
|
184
186
|
ContentWrapPlugin.prototype.adjustRowHeight = function (sectionRef, from, to) {
|
185
|
-
if (this._adjusting || this._hosts.length
|
187
|
+
if (this._adjusting || !this._hosts.length) {
|
186
188
|
return false; // Quite if grid has not been registered or in the process of adjusting row height
|
187
189
|
}
|
188
190
|
|
@@ -198,17 +200,30 @@ ContentWrapPlugin.prototype.adjustRowHeight = function (sectionRef, from, to) {
|
|
198
200
|
return false;
|
199
201
|
}
|
200
202
|
|
203
|
+
var sectionElem = section.getElement();
|
204
|
+
|
205
|
+
if (!sectionElem || !sectionElem.offsetParent) {
|
206
|
+
return false;
|
207
|
+
}
|
208
|
+
|
201
209
|
this._adjusting = true; // Prevent infinite loop
|
202
210
|
|
203
211
|
var dirtyRows = []; // Collect dirty rows
|
204
212
|
|
205
|
-
var
|
213
|
+
var maxHeight = NaN;
|
214
|
+
var heights = null;
|
206
215
|
|
216
|
+
if (this._evenRowHeight) {
|
217
|
+
maxHeight = this._calcMaxRowHeight(section, dirtyRows, from, to);
|
218
|
+
} else {
|
219
|
+
heights = this._calcRowHeights(section, dirtyRows, from, to);
|
220
|
+
} // Setting row height for multiple rows can cause performance issue
|
207
221
|
|
208
|
-
|
222
|
+
|
223
|
+
var dirtyCount = dirtyRows.length;
|
209
224
|
var prevFState = false;
|
210
225
|
|
211
|
-
if (
|
226
|
+
if (dirtyCount > this._freezingThreshold) {
|
212
227
|
if (section.getFrozenLayout) {
|
213
228
|
prevFState = section.getFrozenLayout();
|
214
229
|
section.setFrozenLayout(true);
|
@@ -219,29 +234,25 @@ ContentWrapPlugin.prototype.adjustRowHeight = function (sectionRef, from, to) {
|
|
219
234
|
var r, rowIndex;
|
220
235
|
|
221
236
|
if (this._evenRowHeight) {
|
222
|
-
|
223
|
-
|
224
|
-
for (r = 0; r < rowCount; ++r) {
|
237
|
+
for (r = 0; r < dirtyCount; ++r) {
|
225
238
|
rowIndex = dirtyRows[r];
|
226
|
-
section.setRowHeight(rowIndex,
|
239
|
+
section.setRowHeight(rowIndex, maxHeight);
|
227
240
|
}
|
228
241
|
} else {
|
229
|
-
|
230
|
-
|
231
|
-
for (r = 0; r < rowCount; ++r) {
|
242
|
+
for (r = 0; r < dirtyCount; ++r) {
|
232
243
|
rowIndex = dirtyRows[r];
|
233
244
|
section.setRowHeight(rowIndex, heights[rowIndex]);
|
234
245
|
}
|
235
246
|
}
|
236
247
|
|
237
|
-
if (
|
248
|
+
if (dirtyCount > this._freezingThreshold) {
|
238
249
|
if (section.setFrozenLayout) {
|
239
250
|
section.setFrozenLayout(prevFState);
|
240
251
|
}
|
241
252
|
}
|
242
253
|
|
243
254
|
this._adjusting = false;
|
244
|
-
return
|
255
|
+
return dirtyCount ? true : false;
|
245
256
|
};
|
246
257
|
/** @public
|
247
258
|
* @param {Object} sectionRef core grid SectionReference object
|
@@ -300,8 +311,8 @@ ContentWrapPlugin.prototype._setColumnContentWrapping = function (colIndex, colu
|
|
300
311
|
/** @private */
|
301
312
|
|
302
313
|
|
303
|
-
ContentWrapPlugin.prototype.
|
304
|
-
if (!this._recalTimer) {
|
314
|
+
ContentWrapPlugin.prototype._requestRecalculation = function () {
|
315
|
+
if (!this._recalTimer && !this._adjusting) {
|
305
316
|
this._recalTimer = setTimeout(this._onRecalculation, 100);
|
306
317
|
}
|
307
318
|
};
|
@@ -328,7 +339,7 @@ ContentWrapPlugin.prototype._clearTimer = function () {
|
|
328
339
|
|
329
340
|
|
330
341
|
ContentWrapPlugin.prototype._getSteppingHeight = function (height) {
|
331
|
-
return Math.
|
342
|
+
return Math.ceil(height) + 14; // Add top and bottom padding
|
332
343
|
};
|
333
344
|
/** @private
|
334
345
|
* @param {Object} section ILayoutGrid
|
@@ -343,25 +354,31 @@ ContentWrapPlugin.prototype._calculateRowHeightAt = function (section, rowIndex)
|
|
343
354
|
var colCount = section.getColumnCount();
|
344
355
|
|
345
356
|
for (var c = 0; c < colCount; ++c) {
|
346
|
-
if (this.isWrappingContent(c)) {
|
347
|
-
|
357
|
+
if (!this.isWrappingContent(c)) {
|
358
|
+
continue;
|
359
|
+
}
|
348
360
|
|
349
|
-
|
350
|
-
var cellContent = cell.getContent();
|
361
|
+
var cell = section.getCell(c, rowIndex, false); // TODO: Handle cell spanning
|
351
362
|
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
return NaN;
|
356
|
-
}
|
363
|
+
if (!cell || !cell.isVisible()) {
|
364
|
+
continue;
|
365
|
+
}
|
357
366
|
|
358
|
-
|
367
|
+
var cellContent = cell.getContent();
|
359
368
|
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
369
|
+
if (!cellContent) {
|
370
|
+
continue;
|
371
|
+
}
|
372
|
+
|
373
|
+
if (!cellContent.offsetParent) {
|
374
|
+
// Cell content is not in the document, so the height cannot be calculated
|
375
|
+
continue;
|
376
|
+
}
|
377
|
+
|
378
|
+
var contentHeight = this._getSteppingHeight(cellContent.offsetHeight);
|
379
|
+
|
380
|
+
if (contentHeight > maxHeight) {
|
381
|
+
maxHeight = contentHeight;
|
365
382
|
}
|
366
383
|
}
|
367
384
|
|
@@ -369,61 +386,90 @@ ContentWrapPlugin.prototype._calculateRowHeightAt = function (section, rowIndex)
|
|
369
386
|
};
|
370
387
|
/** @private
|
371
388
|
* @param {Object} section ILayoutGrid
|
389
|
+
* @param {!Array.<number>} dirtyRows
|
372
390
|
* @param {number=} from
|
373
391
|
* @param {number=} to
|
374
|
-
* @
|
375
|
-
* @return {!Object}
|
392
|
+
* @return {number}
|
376
393
|
*/
|
377
394
|
|
378
395
|
|
379
|
-
ContentWrapPlugin.prototype.
|
380
|
-
if (
|
396
|
+
ContentWrapPlugin.prototype._calcMaxRowHeight = function (section, dirtyRows, from, to) {
|
397
|
+
if (from == null) {
|
398
|
+
from = section.getFirstIndexInView();
|
399
|
+
} else if (!from || from < 0) {
|
381
400
|
from = 0;
|
382
401
|
}
|
383
402
|
|
384
|
-
|
403
|
+
if (to == null) {
|
404
|
+
to = section.getLastIndexInView() + 1;
|
405
|
+
} else {
|
406
|
+
var rowCount = section.getRowCount();
|
385
407
|
|
386
|
-
|
387
|
-
|
408
|
+
if (!to || to > rowCount) {
|
409
|
+
to = rowCount;
|
410
|
+
}
|
388
411
|
}
|
389
412
|
|
390
|
-
var r
|
391
|
-
var
|
413
|
+
var r;
|
414
|
+
var max = 0;
|
392
415
|
|
393
|
-
|
394
|
-
var
|
395
|
-
|
396
|
-
for (r = from; r < to; ++r) {
|
397
|
-
h = this._calculateRowHeightAt(section, r);
|
416
|
+
for (r = from; r < to; ++r) {
|
417
|
+
var h = this._calculateRowHeightAt(section, r);
|
398
418
|
|
399
|
-
|
400
|
-
|
401
|
-
}
|
419
|
+
if (max < h) {
|
420
|
+
max = h;
|
402
421
|
}
|
422
|
+
}
|
403
423
|
|
404
|
-
|
405
|
-
|
424
|
+
if (max) {
|
406
425
|
for (r = from; r < to; ++r) {
|
407
|
-
if (max
|
408
|
-
|
426
|
+
if (max !== section.getRowHeight(r)) {
|
427
|
+
dirtyRows.push(r);
|
409
428
|
}
|
410
429
|
}
|
411
|
-
}
|
412
|
-
var heights = new Array(to);
|
430
|
+
}
|
413
431
|
|
414
|
-
|
415
|
-
|
416
|
-
|
432
|
+
return max;
|
433
|
+
};
|
434
|
+
/** @private
|
435
|
+
* @param {Object} section ILayoutGrid
|
436
|
+
* @param {!Array.<number>} dirtyRows
|
437
|
+
* @param {number=} from
|
438
|
+
* @param {number=} to
|
439
|
+
* @return {!Array.<number>}
|
440
|
+
*/
|
417
441
|
|
418
|
-
|
419
|
-
|
420
|
-
|
442
|
+
|
443
|
+
ContentWrapPlugin.prototype._calcRowHeights = function (section, dirtyRows, from, to) {
|
444
|
+
if (from == null) {
|
445
|
+
from = section.getFirstIndexInView();
|
446
|
+
} else if (!from || from < 0) {
|
447
|
+
from = 0;
|
448
|
+
}
|
449
|
+
|
450
|
+
if (to == null) {
|
451
|
+
to = section.getLastIndexInView() + 1;
|
452
|
+
} else {
|
453
|
+
var rowCount = section.getRowCount();
|
454
|
+
|
455
|
+
if (!to || to > rowCount) {
|
456
|
+
to = rowCount;
|
421
457
|
}
|
458
|
+
}
|
459
|
+
|
460
|
+
var heights = new Array(to);
|
422
461
|
|
423
|
-
|
462
|
+
for (var r = from; r < to; ++r) {
|
463
|
+
var h = this._calculateRowHeightAt(section, r);
|
464
|
+
|
465
|
+
heights[r] = h;
|
466
|
+
|
467
|
+
if (h && h !== section.getRowHeight(r)) {
|
468
|
+
dirtyRows.push(r);
|
469
|
+
}
|
424
470
|
}
|
425
471
|
|
426
|
-
return
|
472
|
+
return heights;
|
427
473
|
};
|
428
474
|
/** @private
|
429
475
|
* @param {number} colIndex
|
@@ -434,7 +480,7 @@ ContentWrapPlugin.prototype._calculateRowHeight = function (section, from, to, o
|
|
434
480
|
ContentWrapPlugin.prototype._wrapContent = function (colIndex, bool) {
|
435
481
|
this._hosts[0].enableColumnClass(colIndex, "wrap", bool, "content");
|
436
482
|
|
437
|
-
this.
|
483
|
+
this._requestRecalculation();
|
438
484
|
};
|
439
485
|
/** @public
|
440
486
|
* @param {number} colIndex
|
@@ -9,7 +9,9 @@ import ElfUtil from "./ElfUtil.js";
|
|
9
9
|
var DragUI = function(options) {
|
10
10
|
this._dragBox = options.dragBox;
|
11
11
|
this._dragBoxIcon = options.dragBoxIcon;
|
12
|
-
|
12
|
+
this._dragBoxContent = document.createElement("div");
|
13
|
+
this._dragBoxContent.className = "drag-box-content";
|
14
|
+
this._dragBox.appendChild(this._dragBoxContent);
|
13
15
|
};
|
14
16
|
|
15
17
|
/** @type {string}
|
@@ -60,6 +62,10 @@ DragUI.applyThemeColor = function(grid) {
|
|
60
62
|
*/
|
61
63
|
DragUI.prototype.onThemeLoaded = function(colors) {
|
62
64
|
if(!DragUI._styles) {
|
65
|
+
var cursor = "grabbing";
|
66
|
+
if (ElfUtil.getElfVersion() < 3) {
|
67
|
+
cursor = "move";
|
68
|
+
}
|
63
69
|
var styles = [ // Main Styles without theme
|
64
70
|
".tr-row-guideline", [ // Backward compatability of row dragging
|
65
71
|
"position: absolute;",
|
@@ -104,6 +110,10 @@ DragUI.prototype.onThemeLoaded = function(colors) {
|
|
104
110
|
"top: 0;",
|
105
111
|
"position: absolute;"
|
106
112
|
],
|
113
|
+
".drag-box-content", [
|
114
|
+
"overflow-x: clip;",
|
115
|
+
"text-overflow: ellipsis;"
|
116
|
+
],
|
107
117
|
".drag-box-icon", [
|
108
118
|
"top: -4px;",
|
109
119
|
"left: 12px;",
|
@@ -128,7 +138,7 @@ DragUI.prototype.onThemeLoaded = function(colors) {
|
|
128
138
|
"--grid-void-icon-color: #FFFFFF;"
|
129
139
|
],
|
130
140
|
".mouse-dragging .cell:hover", [ // for change mouse cursor when hover header while dragging
|
131
|
-
"cursor:
|
141
|
+
"cursor: " + cursor + " !important;"
|
132
142
|
],
|
133
143
|
".tr-grid .column .cell.drag-indicator", [ // --grid-drag-indicator defualt is "none"
|
134
144
|
"border-top: var(--grid-drag-indicator) !important;",
|
@@ -175,27 +185,31 @@ DragUI.prototype.renderDragBox = function (e, grid) {
|
|
175
185
|
}
|
176
186
|
|
177
187
|
var gridElem = grid.getElement();
|
188
|
+
var dragBoxHost = gridElem;
|
178
189
|
var gridParent = grid.getParent().parentNode;
|
179
|
-
|
180
|
-
|
181
|
-
gridParent.appendChild(this._dragBox);
|
190
|
+
if (gridParent.nodeType === 11) {
|
191
|
+
dragBoxHost = gridParent;
|
182
192
|
}
|
183
193
|
|
184
|
-
var
|
194
|
+
var parent = this._dragBox.parentNode;
|
195
|
+
if(!parent) {
|
196
|
+
dragBoxHost.appendChild(this._dragBox);
|
197
|
+
}
|
185
198
|
|
186
|
-
var dragBoxIcon = e.dragBoxIcon || this._dragBox.dragBoxIcon;
|
199
|
+
var dragBoxIcon = e.dragBoxIcon || this._dragBox.dragBoxIcon; // The user-supplied icon
|
187
200
|
this._dragBoxIcon.style.visibility = "visible";
|
201
|
+
parent = this._dragBoxIcon.parentNode;
|
188
202
|
var drop = true;
|
189
203
|
if(dragBoxIcon === "insertion") {
|
190
204
|
drop = false;
|
191
205
|
this._dragBoxIcon.icon = "add";
|
192
|
-
if(!
|
206
|
+
if(!parent) {
|
193
207
|
this._dragBox.appendChild(this._dragBoxIcon);
|
194
208
|
}
|
195
209
|
} else if (dragBoxIcon === "not-allowed" || dragBoxIcon === "no-drop" || dragBoxIcon === "void" ) {
|
196
210
|
drop = false;
|
197
211
|
this._dragBoxIcon.icon = "void";
|
198
|
-
if(!
|
212
|
+
if(!parent) {
|
199
213
|
this._dragBox.appendChild(this._dragBoxIcon);
|
200
214
|
}
|
201
215
|
} else {
|
@@ -213,5 +227,21 @@ DragUI.prototype.renderDragBox = function (e, grid) {
|
|
213
227
|
return drop;
|
214
228
|
};
|
215
229
|
|
230
|
+
/** @public
|
231
|
+
* @param {*} content Element, Node, string, number, or everything else.
|
232
|
+
*/
|
233
|
+
DragUI.prototype.setContent = function(content) {
|
234
|
+
if (content && content["getElement"]) {
|
235
|
+
content = content["getElement"]();
|
236
|
+
}
|
237
|
+
|
238
|
+
var dragBoxContent = this._dragBoxContent;
|
239
|
+
var currentContent = dragBoxContent._content;
|
240
|
+
if (content !== currentContent) {
|
241
|
+
dragBoxContent._content = content;
|
242
|
+
Dom.setContent(dragBoxContent, content);
|
243
|
+
}
|
244
|
+
};
|
245
|
+
|
216
246
|
export default DragUI;
|
217
247
|
export {DragUI};
|