@@ -132,7 +132,6 @@ angular.module('ui.scroll', [])
132
132
buffer .bof = false
133
133
buffer .first = origin
134
134
buffer .next = origin
135
- buffer .localMinIndex = origin
136
135
137
136
minIndex = Number .MAX_VALUE
138
137
maxIndex = Number .MIN_VALUE
@@ -153,6 +152,13 @@ angular.module('ui.scroll', [])
153
152
154
153
buffer .minIndex = -> minIndex
155
154
155
+ buffer .syncDatasource = (datasource )->
156
+ offset = minIndex - (Math .min minIndex, datasource .minIndex || Number .MAX_VALUE )
157
+ datasource .minIndex = (minIndex -= offset)
158
+ datasource .maxIndex = maxIndex = Math .max maxIndex, datasource .maxIndex || Number .MIN_VALUE
159
+ console .log " offset #{ offset} "
160
+ offset
161
+
156
162
# clears the buffer
157
163
buffer .clear = ->
158
164
buffer .remove (0 , buffer .length )
@@ -242,22 +248,6 @@ angular.module('ui.scroll', [])
242
248
buffer .remove (0 , overage)
243
249
buffer .first += overage
244
250
245
- ###
246
- buffer.minIndex = (value) ->
247
- if arguments.length
248
- if buffer.bof
249
- datasource.minIndex = value
250
- else
251
- datasource.minIndex = Math.min value, datasource.minIndex || Number.MAX_VALUE
252
- buffer.localMinIndex = datasource.minIndex
253
- else
254
- offset = buffer.localMinIndex - (datasource.minIndex || origin)
255
- buffer.localMinIndex -= offset
256
- offset: offset #if minIndex is decremented outside of the scroller offset value is by how much
257
- value: buffer.localMinIndex
258
- ###
259
-
260
-
261
251
viewport .adjustPadding = ->
262
252
return if not buffer .length
263
253
viewport .averageItemHeight = (buffer[buffer .length - 1 ].element .offset ().top +
@@ -266,10 +256,11 @@ angular.module('ui.scroll', [])
266
256
topPadding .height (buffer .first - buffer .minIndex ()) * viewport .averageItemHeight
267
257
bottomPadding .height (buffer .maxIndex () - buffer .next + 1 ) * viewport .averageItemHeight
268
258
269
- viewport .syncDatasource = ->
270
- minIndex = buffer .minIndex ()
271
- if minIndex .offset
272
- viewport .scrollTop (minIndex .offset * viewport .averageItemHeight )
259
+ viewport .syncDatasource = (datasource ) ->
260
+ delta = buffer .syncDatasource (datasource) * viewport .averageItemHeight
261
+ topPadding .height topPadding .height () + delta
262
+ viewport .scrollTop viewport .scrollTop () + delta
263
+ viewport .adjustPadding ()
273
264
274
265
viewport .adjustScrollTop = (height ) ->
275
266
paddingHeight = topPadding .height () - height
0 commit comments