Skip to content

Commit 6de776b

Browse files
committed
tuning min/max indicies during removing via Adapter
1 parent ff71620 commit 6de776b

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

src/modules/adapter.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,10 @@ class Adapter {
158158
if(angular.isArray(newItems) && !newItems.length) {
159159
var isTop = index === this.buffer.minIndex;
160160
if(isTop) {
161-
this.buffer.minIndex++;
161+
this.buffer.incrementMinIndex();
162162
}
163163
else {
164-
this.buffer.maxIndex--;
164+
this.buffer.decrementMinIndex();
165165
}
166166
this.viewport.removeCacheItem(index, isTop);
167167
}

src/modules/buffer.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,15 @@ export default function ScrollBuffer(elementRoutines, bufferSize) {
7878
// removes single item(wrapper) from the buffer
7979
buffer.splice(buffer.indexOf(arg1), 1);
8080
if(arg1._op === 'isTop') {
81+
if(buffer.first === buffer.minIndex) {
82+
this.incrementMinIndex();
83+
}
8184
buffer.first++;
8285
}
8386
else {
87+
if(buffer.next === buffer.maxIndex + 1) {
88+
this.decrementMinIndex();
89+
}
8490
buffer.next--;
8591
}
8692
if(!buffer.length) {
@@ -91,6 +97,18 @@ export default function ScrollBuffer(elementRoutines, bufferSize) {
9197
return elementRoutines.removeElementAnimated(arg1);
9298
},
9399

100+
incrementMinIndex() {
101+
if(buffer.minIndex++ === buffer.minIndexUser) {
102+
buffer.minIndexUser++;
103+
}
104+
},
105+
106+
decrementMinIndex() {
107+
if(buffer.maxIndex-- === buffer.maxIndexUser) {
108+
buffer.maxIndexUser--;
109+
}
110+
},
111+
94112
effectiveHeight(elements) {
95113
if (!elements.length) {
96114
return 0;

0 commit comments

Comments
 (0)