neo.mjs 8.4.1 → 8.4.2
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/apps/ServiceWorker.mjs +2 -2
- package/apps/portal/view/home/FooterContainer.mjs +1 -1
- package/examples/ServiceWorker.mjs +2 -2
- package/examples/grid/bigData/MainContainer.mjs +26 -6
- package/package.json +1 -1
- package/src/DefaultConfig.mjs +2 -2
- package/src/grid/Container.mjs +0 -6
- package/src/grid/View.mjs +68 -24
package/apps/ServiceWorker.mjs
CHANGED
@@ -49,12 +49,19 @@ class MainContainer extends Viewport {
|
|
49
49
|
value : '50',
|
50
50
|
width : 200
|
51
51
|
}, {
|
52
|
-
labelText : 'Buffer
|
53
|
-
labelWidth:
|
52
|
+
labelText : 'Buffer Rows',
|
53
|
+
labelWidth: 95,
|
54
54
|
listeners : {change: 'up.ontBufferRowRangeChange'},
|
55
55
|
store : ['0', '3', '5', '10', '25', '50'],
|
56
56
|
value : '5',
|
57
|
-
width :
|
57
|
+
width : 160
|
58
|
+
}, {
|
59
|
+
labelText : 'Buffer Columns',
|
60
|
+
labelWidth: 120,
|
61
|
+
listeners : {change: 'up.ontBufferColumnRangeChange'},
|
62
|
+
store : ['0', '3', '5', '10', '20'],
|
63
|
+
value : '0',
|
64
|
+
width : 185
|
58
65
|
}]
|
59
66
|
}, {
|
60
67
|
module : GridContainer,
|
@@ -73,12 +80,16 @@ class MainContainer extends Viewport {
|
|
73
80
|
style: {padding: '20px'}
|
74
81
|
}
|
75
82
|
|
83
|
+
get grid() {
|
84
|
+
return this.getItem('grid')
|
85
|
+
}
|
86
|
+
|
76
87
|
/**
|
77
88
|
* @param {Object} data
|
78
89
|
*/
|
79
90
|
onAmountColumnsChange(data) {
|
80
91
|
if (data.oldValue) {
|
81
|
-
this.
|
92
|
+
this.grid.amountColumns = parseInt(data.value.id)
|
82
93
|
}
|
83
94
|
}
|
84
95
|
|
@@ -87,7 +98,16 @@ class MainContainer extends Viewport {
|
|
87
98
|
*/
|
88
99
|
onAmountRowsChange(data) {
|
89
100
|
if (data.oldValue) {
|
90
|
-
this.
|
101
|
+
this.grid.store.amountRows = parseInt(data.value.id)
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
/**
|
106
|
+
* @param {Object} data
|
107
|
+
*/
|
108
|
+
ontBufferColumnRangeChange(data) {
|
109
|
+
if (data.oldValue) {
|
110
|
+
this.grid.view.bufferColumnRange = parseInt(data.value.id)
|
91
111
|
}
|
92
112
|
}
|
93
113
|
|
@@ -96,7 +116,7 @@ class MainContainer extends Viewport {
|
|
96
116
|
*/
|
97
117
|
ontBufferRowRangeChange(data) {
|
98
118
|
if (data.oldValue) {
|
99
|
-
this.
|
119
|
+
this.grid.view.bufferRowRange = parseInt(data.value.id)
|
100
120
|
}
|
101
121
|
}
|
102
122
|
}
|
package/package.json
CHANGED
package/src/DefaultConfig.mjs
CHANGED
@@ -262,12 +262,12 @@ const DefaultConfig = {
|
|
262
262
|
useVdomWorker: true,
|
263
263
|
/**
|
264
264
|
* buildScripts/injectPackageVersion.mjs will update this value
|
265
|
-
* @default '8.4.
|
265
|
+
* @default '8.4.2'
|
266
266
|
* @memberOf! module:Neo
|
267
267
|
* @name config.version
|
268
268
|
* @type String
|
269
269
|
*/
|
270
|
-
version: '8.4.
|
270
|
+
version: '8.4.2'
|
271
271
|
};
|
272
272
|
|
273
273
|
Object.assign(DefaultConfig, {
|
package/src/grid/Container.mjs
CHANGED
@@ -608,12 +608,6 @@ class GridContainer extends BaseContainer {
|
|
608
608
|
if (me.store.sorters.length < 1) {
|
609
609
|
me.removeSortingCss()
|
610
610
|
}
|
611
|
-
} else {
|
612
|
-
me.on('rendered', () => {
|
613
|
-
me.timeout(50).then(() => {
|
614
|
-
me.createViewData(data)
|
615
|
-
})
|
616
|
-
}, me, {once: true})
|
617
611
|
}
|
618
612
|
}
|
619
613
|
|
package/src/grid/View.mjs
CHANGED
@@ -38,6 +38,12 @@ class GridView extends Component {
|
|
38
38
|
* @protected
|
39
39
|
*/
|
40
40
|
baseCls: ['neo-grid-view'],
|
41
|
+
/**
|
42
|
+
* The amount of columns (cells) to paint before the first & after the last visible column,
|
43
|
+
* to enhance the scrolling performance
|
44
|
+
* @member {Number} bufferColumnRange_=0
|
45
|
+
*/
|
46
|
+
bufferColumnRange_: 0,
|
41
47
|
/**
|
42
48
|
* The amount of rows to paint before the first & after the last visible row,
|
43
49
|
* to enhance the scrolling performance
|
@@ -54,6 +60,11 @@ class GridView extends Component {
|
|
54
60
|
* @protected
|
55
61
|
*/
|
56
62
|
containerId: null,
|
63
|
+
/**
|
64
|
+
* Internal flag. Gets calculated after mounting grid.View rows
|
65
|
+
* @member {Number} containerWidth_=0
|
66
|
+
*/
|
67
|
+
containerWidth_: 0,
|
57
68
|
/**
|
58
69
|
* @member {Object[]} columnPositions_=[]
|
59
70
|
* @protected
|
@@ -98,7 +109,7 @@ class GridView extends Component {
|
|
98
109
|
useRowRecordIds: true,
|
99
110
|
/**
|
100
111
|
* Stores the indexes of the first & last painted columns
|
101
|
-
* @member {
|
112
|
+
* @member {Number[]} visibleColumns_=[0,0]
|
102
113
|
* @protected
|
103
114
|
*/
|
104
115
|
visibleColumns_: [0, 0],
|
@@ -205,6 +216,16 @@ class GridView extends Component {
|
|
205
216
|
}
|
206
217
|
}
|
207
218
|
|
219
|
+
/**
|
220
|
+
* Triggered after the bufferColumnRange config got changed
|
221
|
+
* @param {Number} value
|
222
|
+
* @param {Number} oldValue
|
223
|
+
* @protected
|
224
|
+
*/
|
225
|
+
afterSetBufferColumnRange(value, oldValue) {
|
226
|
+
oldValue !== undefined && this.createViewData()
|
227
|
+
}
|
228
|
+
|
208
229
|
/**
|
209
230
|
* Triggered after the bufferRowRange config got changed
|
210
231
|
* @param {Number} value
|
@@ -215,6 +236,18 @@ class GridView extends Component {
|
|
215
236
|
oldValue !== undefined && this.createViewData()
|
216
237
|
}
|
217
238
|
|
239
|
+
/**
|
240
|
+
* Triggered after the containerWidth config got changed
|
241
|
+
* @param {Number} value
|
242
|
+
* @param {Number} oldValue
|
243
|
+
* @protected
|
244
|
+
*/
|
245
|
+
afterSetContainerWidth(value, oldValue) {
|
246
|
+
if (value > 0 && this.columnPositions.length > 0) {
|
247
|
+
this.updateVisibleColumns()
|
248
|
+
}
|
249
|
+
}
|
250
|
+
|
218
251
|
/**
|
219
252
|
* Triggered after the columnPositions config got changed
|
220
253
|
* @param {Object[]} value
|
@@ -222,13 +255,8 @@ class GridView extends Component {
|
|
222
255
|
* @protected
|
223
256
|
*/
|
224
257
|
afterSetColumnPositions(value, oldValue) {
|
225
|
-
|
226
|
-
|
227
|
-
if (value.length > 0) {
|
228
|
-
// for changing an array inline, we need to use the leading underscore
|
229
|
-
me._visibleColumns[1] = value.length - 1;
|
230
|
-
|
231
|
-
me.createViewData()
|
258
|
+
if (value.length > 0 && this.containerWidth > 0) {
|
259
|
+
this.updateVisibleColumns()
|
232
260
|
}
|
233
261
|
}
|
234
262
|
|
@@ -322,8 +350,8 @@ class GridView extends Component {
|
|
322
350
|
|
323
351
|
/**
|
324
352
|
* Triggered after the visibleColumns config got changed
|
325
|
-
* @param {Number} value
|
326
|
-
* @param {Number} oldValue
|
353
|
+
* @param {Number[]} value
|
354
|
+
* @param {Number[]} oldValue
|
327
355
|
* @protected
|
328
356
|
*/
|
329
357
|
afterSetVisibleColumns(value, oldValue) {
|
@@ -433,11 +461,11 @@ class GridView extends Component {
|
|
433
461
|
}
|
434
462
|
|
435
463
|
let me = this,
|
436
|
-
{gridContainer, selectedRows, visibleColumns} = me,
|
464
|
+
{bufferColumnRange, gridContainer, selectedRows, visibleColumns} = me,
|
437
465
|
columns = gridContainer.items[0].items,
|
438
466
|
id = me.getRowId(record, rowIndex),
|
439
467
|
trCls = me.getTrClass(record, rowIndex),
|
440
|
-
config, column, gridRow, i;
|
468
|
+
config, column, endIndex, gridRow, i, startIndex;
|
441
469
|
|
442
470
|
me.recordVnodeMap[id] = rowIndex;
|
443
471
|
|
@@ -471,7 +499,10 @@ class GridView extends Component {
|
|
471
499
|
}
|
472
500
|
};
|
473
501
|
|
474
|
-
|
502
|
+
endIndex = Math.min(columns.length - 1, visibleColumns[1] + bufferColumnRange);
|
503
|
+
startIndex = Math.max(0, visibleColumns[0] - bufferColumnRange);
|
504
|
+
|
505
|
+
for (i=startIndex; i <= endIndex; i++) {
|
475
506
|
column = columns[i];
|
476
507
|
config = me.applyRendererOutput({column, gridContainer, index: rowIndex, record});
|
477
508
|
|
@@ -495,16 +526,23 @@ class GridView extends Component {
|
|
495
526
|
*
|
496
527
|
*/
|
497
528
|
createViewData() {
|
498
|
-
let me
|
529
|
+
let me = this,
|
499
530
|
{bufferRowRange, startIndex, store} = me,
|
500
|
-
|
531
|
+
countRecords = store.getCount(),
|
532
|
+
rows = [],
|
501
533
|
endIndex, i;
|
502
534
|
|
503
|
-
if (
|
535
|
+
if (
|
536
|
+
countRecords < 1 ||
|
537
|
+
me.availableRows < 1 ||
|
538
|
+
me._containerWidth < 1 || // we are not checking me.containerWidth, since we want to ignore the config symbol
|
539
|
+
me.columnPositions.length < 1 ||
|
540
|
+
me.visibleColumns[1] < 1
|
541
|
+
) {
|
504
542
|
return
|
505
543
|
}
|
506
544
|
|
507
|
-
endIndex = Math.min(
|
545
|
+
endIndex = Math.min(countRecords, me.availableRows + startIndex + bufferRowRange);
|
508
546
|
startIndex = Math.max(0, startIndex - bufferRowRange);
|
509
547
|
|
510
548
|
for (i=startIndex; i < endIndex; i++) {
|
@@ -787,15 +825,16 @@ class GridView extends Component {
|
|
787
825
|
*
|
788
826
|
*/
|
789
827
|
updateVisibleColumns() {
|
790
|
-
let me
|
791
|
-
{
|
792
|
-
|
793
|
-
|
794
|
-
|
828
|
+
let me = this,
|
829
|
+
{columnPositions} = me,
|
830
|
+
{x} = me.scrollPosition,
|
831
|
+
i = 0,
|
832
|
+
len = columnPositions.length,
|
833
|
+
endIndex = len - 1,
|
795
834
|
column, startIndex;
|
796
835
|
|
797
836
|
for (; i < len; i++) {
|
798
|
-
column =
|
837
|
+
column = columnPositions[i];
|
799
838
|
|
800
839
|
if (x >= column.x && x <= column.x + column.width) {
|
801
840
|
startIndex = i
|
@@ -807,7 +846,12 @@ class GridView extends Component {
|
|
807
846
|
}
|
808
847
|
}
|
809
848
|
|
810
|
-
|
849
|
+
if (
|
850
|
+
Math.abs(startIndex - me.visibleColumns[0]) >= me.bufferColumnRange ||
|
851
|
+
me.visibleColumns[1] < 1 // initial call
|
852
|
+
) {
|
853
|
+
me.visibleColumns = [startIndex, endIndex]
|
854
|
+
}
|
811
855
|
}
|
812
856
|
}
|
813
857
|
|