@refinitiv-ui/efx-grid 6.0.69 → 6.0.71
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/column-selection-dialog/lib/column-selection-dialog.js +19 -7
- package/lib/core/dist/core.js +38 -3
- 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/core/es6/grid/VirtualizedLayoutGrid.js +8 -1
- package/lib/filter-dialog/lib/filter-dialog.js +90 -51
- 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 +7 -27
- package/lib/tr-grid-column-stack/es6/ColumnStack.js +7 -1
- package/lib/tr-grid-filter-input/es6/FilterInput.js +9 -3
- package/lib/tr-grid-in-cell-editing/es6/InCellEditing.d.ts +3 -2
- package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +65 -18
- 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 +1 -3
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +235 -114
- package/lib/tr-grid-row-selection/es6/RowSelection.js +14 -32
- package/lib/tr-grid-titlewrap/es6/TitleWrap.d.ts +2 -2
- package/lib/tr-grid-titlewrap/es6/TitleWrap.js +1 -1
- 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/InCellEditing.d.ts +3 -2
- package/lib/types/es6/RealtimeGrid/Grid.d.ts +5 -2
- package/lib/types/es6/RowFiltering.d.ts +1 -3
- package/lib/types/es6/TitleWrap.d.ts +2 -2
- package/lib/versions.json +14 -14
- package/package.json +1 -1
@@ -33,6 +33,8 @@ import VirtualizedLayoutGrid from "./VirtualizedLayoutGrid.js";
|
|
33
33
|
*/
|
34
34
|
/** @event Core#beforeContentBinding */
|
35
35
|
/** @event Core#postSectionDataBinding */
|
36
|
+
/** @event Core#firstRendered */
|
37
|
+
/** @event Core#afterContentBinding */
|
36
38
|
/** @event Core#rowHighlighted */
|
37
39
|
|
38
40
|
/** @event Core#rowAdded
|
@@ -203,6 +205,8 @@ var Core = function (opt_initializer) {
|
|
203
205
|
"beforeContentBinding",
|
204
206
|
"preSectionDataBinding",
|
205
207
|
"postSectionDataBinding",
|
208
|
+
"firstRendered",
|
209
|
+
"afterContentBinding",
|
206
210
|
"rowExpansionBinding",
|
207
211
|
"rowHighlighted",
|
208
212
|
"preForcedUpdate",
|
@@ -555,6 +559,10 @@ Core.prototype._groupDefs = null;
|
|
555
559
|
* @private
|
556
560
|
*/
|
557
561
|
Core.prototype._batches = null;
|
562
|
+
/** @type {boolean}
|
563
|
+
* @private
|
564
|
+
*/
|
565
|
+
Core.prototype._firstRendered = false;
|
558
566
|
//#region Public Methods
|
559
567
|
|
560
568
|
/**
|
@@ -562,7 +570,7 @@ Core.prototype._batches = null;
|
|
562
570
|
* @return {string}
|
563
571
|
*/
|
564
572
|
Core.getVersion = function () {
|
565
|
-
return "5.1.
|
573
|
+
return "5.1.80";
|
566
574
|
};
|
567
575
|
/** {@link ElementWrapper#dispose}
|
568
576
|
* @override
|
@@ -1370,6 +1378,7 @@ Core.prototype.getColumnCount = function () {
|
|
1370
1378
|
* @fires Core#preSectionDataBinding
|
1371
1379
|
* @fires Core#columnDataBinding
|
1372
1380
|
* @fires Core#postSectionDataBinding
|
1381
|
+
* @fires Core#afterContentBinding
|
1373
1382
|
*/
|
1374
1383
|
Core.prototype.setColumnCount = function(num) {
|
1375
1384
|
var colCount = this._layoutX.getLaneCount();
|
@@ -1398,6 +1407,7 @@ Core.prototype.setColumnCount = function(num) {
|
|
1398
1407
|
* @fires Core#preSectionDataBinding
|
1399
1408
|
* @fires Core#columnDataBinding
|
1400
1409
|
* @fires Core#postSectionDataBinding
|
1410
|
+
* @fires Core#afterContentBinding
|
1401
1411
|
*/
|
1402
1412
|
Core.prototype.insertColumn = function (index, jsonObj) {
|
1403
1413
|
var prevCount = this.getColumnCount();
|
@@ -2013,6 +2023,7 @@ Core.prototype._deserializeColumn = function (index, jsonObj) {
|
|
2013
2023
|
* @fires Core#preSectionDataBinding
|
2014
2024
|
* @fires Core#columnDataBinding
|
2015
2025
|
* @fires Core#postSectionDataBinding
|
2026
|
+
* @fires Core#afterContentBinding
|
2016
2027
|
*/
|
2017
2028
|
Core.prototype.addRow = function (opt_num) {
|
2018
2029
|
if (opt_num == null) { opt_num = 1; }
|
@@ -3817,6 +3828,7 @@ Core.prototype.synchronizeHScrollbar = function (subGrid) {
|
|
3817
3828
|
* @fires Core#preSectionDataBinding
|
3818
3829
|
* @fires Core#columnDataBinding
|
3819
3830
|
* @fires Core#postSectionDataBinding
|
3831
|
+
* @fires Core#afterContentBinding
|
3820
3832
|
*/
|
3821
3833
|
Core.prototype.updateRowData = function (sectionRef, fromRowIndex, lastRowIndex, userParam) {
|
3822
3834
|
var ss = this.getSectionSettings(sectionRef || "content");
|
@@ -4951,7 +4963,9 @@ Core.prototype._onSectionDataChanged = function (e) {
|
|
4951
4963
|
rowDataCollection = dataView.getMultipleRowData(rids, fromR, toR);
|
4952
4964
|
e["dataRows"] = rowDataCollection;
|
4953
4965
|
}
|
4954
|
-
|
4966
|
+
|
4967
|
+
var isContentSection = e["sectionType"] === "content";
|
4968
|
+
if(isContentSection){
|
4955
4969
|
this._dispatch("beforeContentBinding", e);
|
4956
4970
|
}
|
4957
4971
|
this._dispatch("preSectionDataBinding", e);
|
@@ -4985,10 +4999,24 @@ Core.prototype._onSectionDataChanged = function (e) {
|
|
4985
4999
|
this._dispatch("postSectionDataBinding", e);
|
4986
5000
|
this._dispatchRowExpansionBinding(e);
|
4987
5001
|
|
5002
|
+
if(isContentSection){
|
5003
|
+
if(!this._firstRendered) {
|
5004
|
+
this._dispatch("firstRendered", e);
|
5005
|
+
this._firstRendered = true;
|
5006
|
+
}
|
5007
|
+
this._dispatch("afterContentBinding", e);
|
5008
|
+
}
|
4988
5009
|
section._startBindingSession(false);
|
4989
5010
|
this._dispatchingDataChanged = false;
|
4990
5011
|
};
|
4991
5012
|
|
5013
|
+
/** @public
|
5014
|
+
* @ignore
|
5015
|
+
*/
|
5016
|
+
Core.prototype.resetInternalState = function() {
|
5017
|
+
this._firstRendered = false;
|
5018
|
+
};
|
5019
|
+
|
4992
5020
|
/** @private
|
4993
5021
|
* @param {VScrollbar|HScrollbar} scrollbar
|
4994
5022
|
* @returns {boolean}
|
@@ -775,7 +775,14 @@ VirtualizedLayoutGrid.prototype.getFirstIndexInView = function () {
|
|
775
775
|
|
776
776
|
/** @inheritDoc */
|
777
777
|
VirtualizedLayoutGrid.prototype.getLastIndexInView = function () {
|
778
|
-
|
778
|
+
var li = this._firstIndex + this._getInnerRowCount() - 1;
|
779
|
+
var core = this._grid._getContext();
|
780
|
+
var dv = core.getDataSource();
|
781
|
+
var actualLastIndex = dv ? dv.getRowCount() - 1 : -1;
|
782
|
+
if (li > actualLastIndex) { //Avoid incorrect index because the delay of row count synchronization after filtering
|
783
|
+
return actualLastIndex;
|
784
|
+
}
|
785
|
+
return li;
|
779
786
|
};
|
780
787
|
|
781
788
|
/** @inheritDoc */
|
@@ -137,7 +137,7 @@ class FilterDialog extends BasicElement {
|
|
137
137
|
constructor() {
|
138
138
|
super();
|
139
139
|
|
140
|
-
this.
|
140
|
+
this._onWindowResized = this._onWindowResized.bind(this);
|
141
141
|
this._afterDialogOpened = this._afterDialogOpened.bind(this);
|
142
142
|
|
143
143
|
this.lang = "en";
|
@@ -155,7 +155,7 @@ class FilterDialog extends BasicElement {
|
|
155
155
|
"autoRepositioning": false,
|
156
156
|
"uiBlocking": true
|
157
157
|
});
|
158
|
-
this.
|
158
|
+
this._winResizedTimer = 0;
|
159
159
|
ElementObserver.addLanguageListener(this);
|
160
160
|
}
|
161
161
|
|
@@ -417,7 +417,9 @@ class FilterDialog extends BasicElement {
|
|
417
417
|
if (changedProps.has("isShown")) {
|
418
418
|
if (this.isShown) {
|
419
419
|
this._updateUIState(); // should updateUIState everytime popup being show
|
420
|
-
this._popup.
|
420
|
+
if(this._popup.isHidden()) { // If popup is not already in doc, append it
|
421
|
+
this._popup.show(); // Popup position will also be modified
|
422
|
+
}
|
421
423
|
setTimeout(this._afterDialogOpened, 0); //use setTimeout to make sure everything is rendered before focus
|
422
424
|
} else { // This is to handle the case where isShown is directly modified from the dialog. We need to synchronize the states
|
423
425
|
this._popup.hide();
|
@@ -429,13 +431,16 @@ class FilterDialog extends BasicElement {
|
|
429
431
|
* @private
|
430
432
|
*/
|
431
433
|
_afterDialogOpened() {
|
432
|
-
if(this.isShown) {
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
434
|
+
if(!this.isShown) {
|
435
|
+
return;
|
436
|
+
}
|
437
|
+
|
438
|
+
this._cancelBtn.focus(); // Keep focus on cancel button when open dialog
|
439
|
+
this._updateDialogHeight(); // position of the popup element will always be updated
|
440
|
+
|
441
|
+
var popupElem = this._popup.getElement();
|
442
|
+
if(popupElem) {// After all changes, ensure that visibility is reset back
|
443
|
+
popupElem.style.visibility = "";
|
439
444
|
}
|
440
445
|
}
|
441
446
|
|
@@ -451,8 +456,11 @@ class FilterDialog extends BasicElement {
|
|
451
456
|
* @public
|
452
457
|
*/
|
453
458
|
show() {
|
459
|
+
var popupElem = this._popup.getElement();
|
460
|
+
if(popupElem) {// To prevent blinking due to size and position change
|
461
|
+
popupElem.style.visibility = "hidden";
|
462
|
+
}
|
454
463
|
this._popup.appendChild(this); // To force first time initialization, focus is already included in updated()
|
455
|
-
|
456
464
|
this._popup.show();
|
457
465
|
}
|
458
466
|
|
@@ -474,9 +482,9 @@ class FilterDialog extends BasicElement {
|
|
474
482
|
*/
|
475
483
|
_onPopupHidden() {
|
476
484
|
this.isShown = false; // For backward compatability
|
477
|
-
if (this.
|
478
|
-
clearTimeout(this.
|
479
|
-
this.
|
485
|
+
if (this._winResizedTimer) {
|
486
|
+
clearTimeout(this._winResizedTimer);
|
487
|
+
this._winResizedTimer = 0;
|
480
488
|
}
|
481
489
|
}
|
482
490
|
|
@@ -484,10 +492,18 @@ class FilterDialog extends BasicElement {
|
|
484
492
|
* @private
|
485
493
|
*/
|
486
494
|
_onWindowResize() {
|
487
|
-
if(!this.
|
488
|
-
this.
|
495
|
+
if(!this._winResizedTimer && this.isShown){
|
496
|
+
this._winResizedTimer = setTimeout(this._onWindowResized, 400);
|
489
497
|
}
|
490
498
|
}
|
499
|
+
/**
|
500
|
+
* @private
|
501
|
+
*/
|
502
|
+
_onWindowResized() {
|
503
|
+
this._winResizedTimer = 0;
|
504
|
+
this._updateDialogHeight();
|
505
|
+
}
|
506
|
+
|
491
507
|
|
492
508
|
/**
|
493
509
|
* @public
|
@@ -563,21 +579,42 @@ class FilterDialog extends BasicElement {
|
|
563
579
|
e.preventDefault();
|
564
580
|
e.stopPropagation();
|
565
581
|
this._updateFilterModeSelectionUI();
|
566
|
-
this._updateDialogHeight(
|
582
|
+
this._updateDialogHeight();
|
567
583
|
}
|
568
584
|
|
585
|
+
/**
|
586
|
+
* @private
|
587
|
+
* @param {string} oper
|
588
|
+
* @param {*} val
|
589
|
+
* @returns {boolean}
|
590
|
+
*/
|
591
|
+
_isValidCondition(oper, val) {
|
592
|
+
if(oper) {
|
593
|
+
if(val || val === 0) {
|
594
|
+
return true;
|
595
|
+
}
|
596
|
+
}
|
597
|
+
return false;
|
598
|
+
}
|
569
599
|
/**
|
570
600
|
* @private
|
571
601
|
* @param {object} e - event
|
572
602
|
*/
|
573
603
|
_onDoneBtnClick(e) {
|
574
|
-
let
|
604
|
+
let eventArg = {
|
605
|
+
bubbles: false,
|
606
|
+
detail: {
|
607
|
+
fieldDataType: this.fieldDataType
|
608
|
+
}
|
609
|
+
};
|
575
610
|
if (this._isAdvancedFilterMode()) {
|
576
611
|
// Retrieve filter conditions from UI;
|
577
612
|
let oper1, oper2, val1, val2, connector;
|
578
613
|
var dateTimeType = toDateTimeType(this.fieldDataType);
|
579
614
|
var fdt = dateTimeType ? dateTimeType : this.fieldDataType.toLowerCase();
|
615
|
+
var useUTCTime = false;
|
580
616
|
if (fdt === DATE_TIME) {
|
617
|
+
useUTCTime = this.useUTCTime;
|
581
618
|
oper1 = this._dateTimeComboBoxes[0].value;
|
582
619
|
val1 = this._dateTimePickers[0].value;
|
583
620
|
if(val1) {
|
@@ -624,29 +661,32 @@ class FilterDialog extends BasicElement {
|
|
624
661
|
}
|
625
662
|
}
|
626
663
|
}
|
664
|
+
var ary2D = [];
|
665
|
+
|
666
|
+
if(this._isValidCondition(oper1, val1)) {
|
667
|
+
ary2D.push([oper1, val1]);
|
668
|
+
}
|
627
669
|
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
conditions: [
|
632
|
-
[oper1, val1, connector, fdt == DATE_TIME ? this.useUTCTime : null],
|
633
|
-
[oper2, val2, null, fdt == DATE_TIME ? this.useUTCTime : null]
|
634
|
-
],
|
635
|
-
fieldDataType: this.fieldDataType
|
670
|
+
if(this._isValidCondition(oper2, val2)) {
|
671
|
+
if(ary2D.length) {
|
672
|
+
ary2D[0][2] = connector;
|
636
673
|
}
|
637
|
-
|
674
|
+
ary2D.push([oper2, val2]);
|
675
|
+
}
|
676
|
+
|
677
|
+
if(useUTCTime) {
|
678
|
+
ary2D.forEach(function(itm) {
|
679
|
+
item[3] = true;
|
680
|
+
});
|
681
|
+
}
|
682
|
+
|
683
|
+
eventArg.detail.conditions = ary2D;
|
638
684
|
} else {
|
639
|
-
|
640
|
-
bubbles: false,
|
641
|
-
detail: {
|
642
|
-
value: this._dataSelector.getSelectedItems(),
|
643
|
-
fieldDataType: this.fieldDataType
|
644
|
-
}
|
645
|
-
};
|
685
|
+
eventArg.detail.value = this._dataSelector.getSelectedItems();
|
646
686
|
}
|
647
687
|
|
648
|
-
this.dispatchEvent(new CustomEvent("filterChanged",
|
649
|
-
this.dispatchEvent(new CustomEvent("confirm",
|
688
|
+
this.dispatchEvent(new CustomEvent("filterChanged", eventArg));
|
689
|
+
this.dispatchEvent(new CustomEvent("confirm", eventArg));
|
650
690
|
this.hide();
|
651
691
|
}
|
652
692
|
|
@@ -808,40 +848,39 @@ class FilterDialog extends BasicElement {
|
|
808
848
|
}
|
809
849
|
}
|
810
850
|
}
|
811
|
-
/**
|
812
|
-
* @
|
813
|
-
* @param {boolean=} afterOpened
|
851
|
+
/** @private
|
852
|
+
* @returns {boolean}
|
814
853
|
*/
|
815
|
-
_updateDialogHeight(
|
816
|
-
if(!afterOpened) {
|
817
|
-
this._dialogHeightTimerId = 0;
|
818
|
-
}
|
819
|
-
|
820
|
-
this._popup.updatePosition(false); // update position without fallback
|
854
|
+
_updateDialogHeight() {
|
821
855
|
this._rootContainer.classList.remove("compact");
|
822
856
|
this._rootContainer.style.height = "";
|
857
|
+
this._popup.updatePosition(false); // update position without fallback
|
823
858
|
|
824
859
|
const position = Dom.getRelativePosition(this, document.body);
|
825
860
|
const dialogHeight = this.offsetHeight;
|
826
|
-
const windowHeight = window.innerHeight;
|
861
|
+
const windowHeight = window.innerHeight - 5; // Add some buffer
|
827
862
|
const dialogCoverage = position.y + dialogHeight;
|
828
863
|
const heightDiff = dialogCoverage - windowHeight;
|
829
|
-
const isAdvancedFilter = this._isAdvancedFilterMode();
|
830
|
-
const minHeight = isAdvancedFilter ? 262 : 216;
|
831
|
-
const compactThreshold = 409;
|
832
864
|
|
833
|
-
|
865
|
+
var heightChange = false;
|
866
|
+
if(heightDiff > 0) {
|
867
|
+
heightChange = true;
|
868
|
+
const isAdvancedFilter = this._isAdvancedFilterMode();
|
869
|
+
const minHeight = isAdvancedFilter ? 262 : 216;
|
834
870
|
let newHeight = dialogHeight - heightDiff;
|
835
871
|
if(newHeight < minHeight || isAdvancedFilter){
|
836
872
|
newHeight = minHeight;
|
837
873
|
}
|
838
874
|
this._rootContainer.style.height = newHeight + "px";
|
839
875
|
|
876
|
+
const compactThreshold = 409;
|
840
877
|
if(newHeight < compactThreshold){
|
841
878
|
this._rootContainer.classList.add("compact");
|
842
879
|
}
|
843
880
|
}
|
844
|
-
|
881
|
+
|
882
|
+
this._popup.updatePosition(); // This must be called to apply fallback or height change
|
883
|
+
return heightChange;
|
845
884
|
}
|
846
885
|
/**
|
847
886
|
* @private
|
package/lib/grid/index.js
CHANGED
@@ -35691,6 +35691,8 @@ VirtualizedLayoutGrid._proto = VirtualizedLayoutGrid.prototype;
|
|
35691
35691
|
*/
|
35692
35692
|
/** @event Core#beforeContentBinding */
|
35693
35693
|
/** @event Core#postSectionDataBinding */
|
35694
|
+
/** @event Core#firstRendered */
|
35695
|
+
/** @event Core#afterContentBinding */
|
35694
35696
|
/** @event Core#rowHighlighted */
|
35695
35697
|
|
35696
35698
|
/** @event Core#rowAdded
|
@@ -35861,6 +35863,8 @@ var Core = function (opt_initializer) {
|
|
35861
35863
|
"beforeContentBinding",
|
35862
35864
|
"preSectionDataBinding",
|
35863
35865
|
"postSectionDataBinding",
|
35866
|
+
"firstRendered",
|
35867
|
+
"afterContentBinding",
|
35864
35868
|
"rowExpansionBinding",
|
35865
35869
|
"rowHighlighted",
|
35866
35870
|
"preForcedUpdate",
|
@@ -36213,6 +36217,10 @@ Core.prototype._groupDefs = null;
|
|
36213
36217
|
* @private
|
36214
36218
|
*/
|
36215
36219
|
Core.prototype._batches = null;
|
36220
|
+
/** @type {boolean}
|
36221
|
+
* @private
|
36222
|
+
*/
|
36223
|
+
Core.prototype._firstRendered = false;
|
36216
36224
|
//#region Public Methods
|
36217
36225
|
|
36218
36226
|
/**
|
@@ -36220,7 +36228,7 @@ Core.prototype._batches = null;
|
|
36220
36228
|
* @return {string}
|
36221
36229
|
*/
|
36222
36230
|
Core.getVersion = function () {
|
36223
|
-
return "5.1.
|
36231
|
+
return "5.1.78";
|
36224
36232
|
};
|
36225
36233
|
/** {@link ElementWrapper#dispose}
|
36226
36234
|
* @override
|
@@ -37028,6 +37036,7 @@ Core.prototype.getColumnCount = function () {
|
|
37028
37036
|
* @fires Core#preSectionDataBinding
|
37029
37037
|
* @fires Core#columnDataBinding
|
37030
37038
|
* @fires Core#postSectionDataBinding
|
37039
|
+
* @fires Core#afterContentBinding
|
37031
37040
|
*/
|
37032
37041
|
Core.prototype.setColumnCount = function(num) {
|
37033
37042
|
var colCount = this._layoutX.getLaneCount();
|
@@ -37056,6 +37065,7 @@ Core.prototype.setColumnCount = function(num) {
|
|
37056
37065
|
* @fires Core#preSectionDataBinding
|
37057
37066
|
* @fires Core#columnDataBinding
|
37058
37067
|
* @fires Core#postSectionDataBinding
|
37068
|
+
* @fires Core#afterContentBinding
|
37059
37069
|
*/
|
37060
37070
|
Core.prototype.insertColumn = function (index, jsonObj) {
|
37061
37071
|
var prevCount = this.getColumnCount();
|
@@ -37671,6 +37681,7 @@ Core.prototype._deserializeColumn = function (index, jsonObj) {
|
|
37671
37681
|
* @fires Core#preSectionDataBinding
|
37672
37682
|
* @fires Core#columnDataBinding
|
37673
37683
|
* @fires Core#postSectionDataBinding
|
37684
|
+
* @fires Core#afterContentBinding
|
37674
37685
|
*/
|
37675
37686
|
Core.prototype.addRow = function (opt_num) {
|
37676
37687
|
if (opt_num == null) { opt_num = 1; }
|
@@ -39475,6 +39486,7 @@ Core.prototype.synchronizeHScrollbar = function (subGrid) {
|
|
39475
39486
|
* @fires Core#preSectionDataBinding
|
39476
39487
|
* @fires Core#columnDataBinding
|
39477
39488
|
* @fires Core#postSectionDataBinding
|
39489
|
+
* @fires Core#afterContentBinding
|
39478
39490
|
*/
|
39479
39491
|
Core.prototype.updateRowData = function (sectionRef, fromRowIndex, lastRowIndex, userParam) {
|
39480
39492
|
var ss = this.getSectionSettings(sectionRef || "content");
|
@@ -40609,7 +40621,9 @@ Core.prototype._onSectionDataChanged = function (e) {
|
|
40609
40621
|
rowDataCollection = dataView.getMultipleRowData(rids, fromR, toR);
|
40610
40622
|
e["dataRows"] = rowDataCollection;
|
40611
40623
|
}
|
40612
|
-
|
40624
|
+
|
40625
|
+
var isContentSection = e["sectionType"] === "content";
|
40626
|
+
if(isContentSection){
|
40613
40627
|
this._dispatch("beforeContentBinding", e);
|
40614
40628
|
}
|
40615
40629
|
this._dispatch("preSectionDataBinding", e);
|
@@ -40643,10 +40657,24 @@ Core.prototype._onSectionDataChanged = function (e) {
|
|
40643
40657
|
this._dispatch("postSectionDataBinding", e);
|
40644
40658
|
this._dispatchRowExpansionBinding(e);
|
40645
40659
|
|
40660
|
+
if(isContentSection){
|
40661
|
+
if(!this._firstRendered) {
|
40662
|
+
this._dispatch("firstRendered", e);
|
40663
|
+
this._firstRendered = true;
|
40664
|
+
}
|
40665
|
+
this._dispatch("afterContentBinding", e);
|
40666
|
+
}
|
40646
40667
|
section._startBindingSession(false);
|
40647
40668
|
this._dispatchingDataChanged = false;
|
40648
40669
|
};
|
40649
40670
|
|
40671
|
+
/** @public
|
40672
|
+
* @ignore
|
40673
|
+
*/
|
40674
|
+
Core.prototype.resetInternalState = function() {
|
40675
|
+
this._firstRendered = false;
|
40676
|
+
};
|
40677
|
+
|
40650
40678
|
/** @private
|
40651
40679
|
* @param {VScrollbar|HScrollbar} scrollbar
|
40652
40680
|
* @returns {boolean}
|
@@ -44332,7 +44360,6 @@ SortableTitlePlugin._proto = SortableTitlePlugin.prototype;
|
|
44332
44360
|
* @property {number=} contentRightPadding=0 Padding that is added next to the right most column. The padding is still a part of scrollable content.
|
44333
44361
|
* @property {number=} contentBottomPadding=0 Padding that is added below the last section. The padding is still a part of scrollable content.
|
44334
44362
|
* @property {number=} dataConflationRate=0 set delay for data to avoid to much sorting operation when data changed
|
44335
|
-
* @property {Function=} dataComposed Handler for dataComposed event
|
44336
44363
|
* @property {boolean=} autoDateConversion=false If enabled, date-time field with numeric value will be automatically converted to native date object.
|
44337
44364
|
* @property {boolean=} textSelect=false If enabled, user can select content text by using mouse drag.
|
44338
44365
|
* @property {string=} lang laguage for config localization date time, if null the default language is "en"
|
@@ -44344,6 +44371,10 @@ SortableTitlePlugin._proto = SortableTitlePlugin.prototype;
|
|
44344
44371
|
* @property {string=} childDataField=CHILD_VALUES The given field will be used to store children's static data, such as row color assignment.
|
44345
44372
|
* @property {boolean=} topSection=true If disabled, title section will not be rendered
|
44346
44373
|
* @property {SortableTitlePlugin~Options=} sorting Options for sorting
|
44374
|
+
* @property {Function=} dataComposed Handler for dataComposed event
|
44375
|
+
* @property {Function=} beforeContentBinding Handler for beforeContentBinding event
|
44376
|
+
* @property {Function=} firstRendered Handler for firstRendered event
|
44377
|
+
* @property {Function=} afterContentBinding Handler for afterContentBinding event
|
44347
44378
|
*/
|
44348
44379
|
|
44349
44380
|
/** @typedef {number|string|RowDefinition} Grid~RowReference
|
@@ -44414,6 +44445,16 @@ SortableTitlePlugin._proto = SortableTitlePlugin.prototype;
|
|
44414
44445
|
* @description Trigger before content binding.
|
44415
44446
|
*/
|
44416
44447
|
|
44448
|
+
/** @event Grid#firstRendered
|
44449
|
+
* @property {Object} e Event of firstRendered
|
44450
|
+
* @description This event is triggered when the content is rendered for the first time.
|
44451
|
+
*/
|
44452
|
+
|
44453
|
+
/** @event Grid#afterContentBinding
|
44454
|
+
* @property {Object} e Event of afterContentBinding
|
44455
|
+
* @description Trigger after content binding.
|
44456
|
+
*/
|
44457
|
+
|
44417
44458
|
/** @event Grid#beforeRowRemoved
|
44418
44459
|
* @description Fired only when a row will be removed through Grid's API and before occurring of the actual removal
|
44419
44460
|
*/
|
@@ -44568,7 +44609,6 @@ var Grid = function(placeholder, config) {
|
|
44568
44609
|
t.updateColumnTitle = t.updateColumnTitle.bind(t);
|
44569
44610
|
t._populateTimeSeriesChildren = t._populateTimeSeriesChildren.bind(t);
|
44570
44611
|
|
44571
|
-
t._onBeforeContentBinding = t._onBeforeContentBinding.bind(t);
|
44572
44612
|
t._onPostSectionDataBinding = t._onPostSectionDataBinding.bind(t);
|
44573
44613
|
t._asyncClearDataUpdates = t._asyncClearDataUpdates.bind(t);
|
44574
44614
|
t._clearDataUpdates = t._clearDataUpdates.bind(t);
|
@@ -44661,9 +44701,11 @@ var Grid = function(placeholder, config) {
|
|
44661
44701
|
t._grid.loadPlugin(t._stp, config);
|
44662
44702
|
}
|
44663
44703
|
|
44664
|
-
t._grid.listen("beforeContentBinding", t.
|
44704
|
+
t._grid.listen("beforeContentBinding", t._dispatch.bind(t, "beforeContentBinding"));
|
44665
44705
|
t._grid.listen("preSectionRender", t._onColumnHeaderBinding);
|
44666
44706
|
t._grid.listen("postSectionDataBinding", t._onPostSectionDataBinding);
|
44707
|
+
t._grid.listen("firstRendered", t._dispatch.bind(t, "firstRendered"));
|
44708
|
+
t._grid.listen("afterContentBinding", t._dispatch.bind(t, "afterContentBinding"));
|
44667
44709
|
|
44668
44710
|
t._grid.enableRowHighlighting(true);
|
44669
44711
|
|
@@ -45071,6 +45113,7 @@ Grid.prototype.initialize = function(gridOption) {
|
|
45071
45113
|
var t = this; // For minimizing file size
|
45072
45114
|
t._initializing = true;
|
45073
45115
|
var grid = t._grid; // core grid
|
45116
|
+
grid.resetInternalState();
|
45074
45117
|
gridOption = grid.normalizeConfig(gridOption);
|
45075
45118
|
|
45076
45119
|
var exts = gridOption["plugins"] || gridOption["extensions"];
|
@@ -45177,10 +45220,10 @@ Grid.prototype.initialize = function(gridOption) {
|
|
45177
45220
|
t.listen("rowExpansionBinding", rowExpansionBinding);
|
45178
45221
|
}
|
45179
45222
|
|
45180
|
-
|
45181
|
-
|
45182
|
-
|
45183
|
-
|
45223
|
+
this.addListener(gridOption, "dataComposed");
|
45224
|
+
this.addListener(gridOption, "beforeContentBinding");
|
45225
|
+
this.addListener(gridOption, "firstRendered");
|
45226
|
+
this.addListener(gridOption, "afterContentBinding");
|
45184
45227
|
|
45185
45228
|
if(gridOption["autoDateConversion"]) {
|
45186
45229
|
t._autoDateConversion = true;
|
@@ -46836,7 +46879,6 @@ Grid.prototype.removeAllRows = function() {
|
|
46836
46879
|
|
46837
46880
|
// TODO: This logic should also be in the core grid
|
46838
46881
|
this._grid.getVScrollbar().setScrollTop(0);
|
46839
|
-
this._grid.getHScrollbar().setScrollLeft(0);
|
46840
46882
|
};
|
46841
46883
|
/** WARNING: This does not remove data stored in the data cache
|
46842
46884
|
* @private
|
@@ -47794,13 +47836,6 @@ Grid.prototype._mainSorter = function (rowDefA, rowDefB, order) {
|
|
47794
47836
|
return this._columnSorter(rowDefA, rowDefB, order);
|
47795
47837
|
};
|
47796
47838
|
|
47797
|
-
/** @private
|
47798
|
-
* @param {Object} e
|
47799
|
-
*/
|
47800
|
-
Grid.prototype._onBeforeContentBinding = function(e) {
|
47801
|
-
this._dispatch("beforeContentBinding", e);
|
47802
|
-
};
|
47803
|
-
|
47804
47839
|
/** @private
|
47805
47840
|
* @param {Object} e
|
47806
47841
|
*/
|