Skip to content

Commit eae6f62

Browse files
committed
min/max index on the datasource
1 parent 994dfc0 commit eae6f62

File tree

1 file changed

+12
-21
lines changed

1 file changed

+12
-21
lines changed

src/ui-scroll.coffee

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ angular.module('ui.scroll', [])
132132
buffer.bof = false
133133
buffer.first = origin
134134
buffer.next = origin
135-
buffer.localMinIndex = origin
136135

137136
minIndex = Number.MAX_VALUE
138137
maxIndex = Number.MIN_VALUE
@@ -153,6 +152,13 @@ angular.module('ui.scroll', [])
153152

154153
buffer.minIndex = -> minIndex
155154

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+
156162
# clears the buffer
157163
buffer.clear = ->
158164
buffer.remove(0, buffer.length)
@@ -242,22 +248,6 @@ angular.module('ui.scroll', [])
242248
buffer.remove(0, overage)
243249
buffer.first += overage
244250

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-
261251
viewport.adjustPadding = ->
262252
return if not buffer.length
263253
viewport.averageItemHeight = (buffer[buffer.length-1].element.offset().top +
@@ -266,10 +256,11 @@ angular.module('ui.scroll', [])
266256
topPadding.height (buffer.first - buffer.minIndex()) * viewport.averageItemHeight
267257
bottomPadding.height (buffer.maxIndex() - buffer.next + 1) * viewport.averageItemHeight
268258

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()
273264

274265
viewport.adjustScrollTop = (height) ->
275266
paddingHeight = topPadding.height() - height

0 commit comments

Comments
 (0)