Skip to content

Commit 36ce4f7

Browse files
committed
buffer minIndex and maxIndex refactor
1 parent 577adc9 commit 36ce4f7

File tree

1 file changed

+16
-32
lines changed

1 file changed

+16
-32
lines changed

src/ui-scroll.coffee

Lines changed: 16 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,16 @@ angular.module('ui.scroll', [])
7272
Buffer = (itemName, $scope, linker, bufferSize)->
7373

7474
buffer = Object.create Array.prototype
75+
76+
origin = 1 # starting index for initial load
7577

76-
# starting index for initial load
77-
origin = 1
78+
reset = ->
79+
buffer.eof = false
80+
buffer.bof = false
81+
buffer.first = origin
82+
buffer.next = origin
83+
buffer.minIndex = Number.MAX_VALUE
84+
buffer.maxIndex = Number.MIN_VALUE
7885

7986
buffer.size = bufferSize
8087

@@ -123,39 +130,16 @@ angular.module('ui.scroll', [])
123130
buffer.splice buffer.indexOf(arg1), 1
124131
removeElementAnimated arg1
125132

126-
127-
minIndex = Number.MAX_VALUE
128-
maxIndex = Number.MIN_VALUE
129-
130-
reset = ->
131-
buffer.eof = false
132-
buffer.bof = false
133-
buffer.first = origin
134-
buffer.next = origin
135-
136-
minIndex = Number.MAX_VALUE
137-
maxIndex = Number.MIN_VALUE
138-
139133
buffer.setUpper = ->
140-
if buffer.eof
141-
maxIndex = buffer.next-1
142-
else
143-
maxIndex = Math.max buffer.next-1, maxIndex
144-
145-
buffer.maxIndex = -> maxIndex
134+
buffer.maxIndex = if buffer.eof then buffer.next - 1 else Math.max buffer.next - 1, buffer.maxIndex
146135

147136
buffer.setLower = ->
148-
if buffer.bof
149-
minIndex = buffer.first
150-
else
151-
minIndex = Math.min buffer.first, minIndex
152-
153-
buffer.minIndex = -> minIndex
137+
buffer.minIndex = if buffer.bof then buffer.minIndex = buffer.first else Math.min buffer.first, buffer.minIndex
154138

155139
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
140+
offset = buffer.minIndex - (Math.min buffer.minIndex, datasource.minIndex || Number.MAX_VALUE)
141+
datasource.minIndex = (buffer.minIndex -= offset)
142+
datasource.maxIndex = buffer.maxIndex = Math.max buffer.maxIndex, datasource.maxIndex || Number.MIN_VALUE
159143
console.log "offset #{offset}"
160144
offset
161145

@@ -253,8 +237,8 @@ angular.module('ui.scroll', [])
253237
viewport.averageItemHeight = (buffer[buffer.length-1].element.offset().top +
254238
buffer[buffer.length-1].element.outerHeight(true) -
255239
buffer[0].element.offset().top) / buffer.length
256-
topPadding.height (buffer.first - buffer.minIndex()) * viewport.averageItemHeight
257-
bottomPadding.height (buffer.maxIndex() - buffer.next + 1) * viewport.averageItemHeight
240+
topPadding.height (buffer.first - buffer.minIndex) * viewport.averageItemHeight
241+
bottomPadding.height (buffer.maxIndex - buffer.next + 1) * viewport.averageItemHeight
258242

259243
viewport.syncDatasource = (datasource) ->
260244
return if not buffer.length

0 commit comments

Comments
 (0)