Skip to content

Commit b30ad67

Browse files
committed
minIndex modified by the datasource
1 parent 29c7899 commit b30ad67

File tree

2 files changed

+10
-21
lines changed

2 files changed

+10
-21
lines changed

demo/examples/customviewport.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
<h2 style="position: fixed; left: 150px; top: 0;">is loading: {{loading}}; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="../index.html"> browse sample code</a></h2>
1414
<h2> The list </h2>
1515
<div ui-scroll-viewport style="height:200px">
16-
<div ui-scroll="item in datasource" is-loading="loading" buffer-size='4'>*one {{item}}*</div>
16+
<div id="1" ui-scroll="item in datasource" is-loading="loading" buffer-size='4'>*one {{item}}*</div>
1717
</div>
1818
<h2> One more list </h2>
1919
<div ui-scroll-viewport style="height:200px; border-style: solid; border-width: 1px;">
20-
<div ui-scroll="item in datasource" is-loading="loading">
20+
<div id="2" ui-scroll="item in datasource" is-loading="loading">
2121
*two {{item}}*
2222
<ul ng-hide="parseInt(item.substring(9))%6" class="div-ul">
2323
<li ng-repeat="line in ['line1','line2','line3']">{{line}}</li>

src/ui-scroll.coffee

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -128,19 +128,16 @@ angular.module('ui.scroll', [])
128128
reset()
129129

130130
buffer.minIndex = (value) ->
131-
#console.log "before ds #{datasource.minIndex} local #{buffer.localMinIndex}"
132131
if arguments.length
133132
if buffer.bof
134133
datasource.minIndex = value
135134
else
136135
datasource.minIndex = Math.min value, datasource.minIndex || Number.MAX_VALUE
137136
buffer.localMinIndex = datasource.minIndex
138-
#console.log "after ds #{datasource.minIndex} local #{buffer.localMinIndex}"
139137
else
140138
offset = buffer.localMinIndex - (datasource.minIndex || origin)
141139
buffer.localMinIndex -= offset
142-
#console.log "after ds #{datasource.minIndex} local #{buffer.localMinIndex} , #{offset}"
143-
offset: offset
140+
offset: offset #if minIndex is decremented outside of the scroller offset value is by how much
144141
value: buffer.localMinIndex
145142

146143
buffer.maxIndex = -> datasource.maxIndex || origin
@@ -171,7 +168,7 @@ angular.module('ui.scroll', [])
171168
topPadding = null
172169
bottomPadding = null
173170

174-
bufferPadding = -> viewport.outerHeight() * Math.max(0.1, +padding || 0.1) # some extra space to initiate preload
171+
bufferPadding = -> viewport.outerHeight() * Math.max(0.1, +padding.padding || 0.1) # some extra space to initiate preload
175172

176173
viewport.createPaddingElements = (template) ->
177174
topPadding = new Padding template
@@ -198,7 +195,6 @@ angular.module('ui.scroll', [])
198195
viewport.clipBottom = ->
199196
# clip the invisible items off the bottom
200197
overage = 0
201-
#calculateAverageItemHeight()
202198
overageBottom = viewport.outerHeight() + viewport.averageItemHeight * (buffer.size)
203199
for i in [buffer.length-1..0]
204200
item = buffer[i]
@@ -217,7 +213,6 @@ angular.module('ui.scroll', [])
217213
# clip the invisible items off the top
218214
overage = 0
219215
heightIncrement = 0
220-
#calculateAverageItemHeight()
221216
overageTop = (-1) * viewport.averageItemHeight * buffer.size
222217
for item in buffer
223218
if item.element.offset().top < overageTop
@@ -229,21 +224,16 @@ angular.module('ui.scroll', [])
229224
buffer.remove(0, overage)
230225
buffer.first += overage
231226

232-
calculateAverageItemHeight = () ->
233-
viewport.averageItemHeight = 0
227+
viewport.adjustPadding = () ->
234228
return if not buffer.length
235229
viewport.averageItemHeight = (buffer[buffer.length-1].element.offset().top +
236230
buffer[buffer.length-1].element.outerHeight(true) -
237231
buffer[0].element.offset().top) / buffer.length
238-
console.log "avg #{viewport.averageItemHeight}"
239-
240-
viewport.adjustPadding = () ->
241-
return if not buffer.length
242-
calculateAverageItemHeight()
243232
minIndex = buffer.minIndex()
244-
#console.log "offs #{minIndex.offset}"
245-
viewport.adjustScrollTop(minIndex.offset * viewport.averageItemHeight)
246233
topPadding.height (buffer.first - minIndex.value) * viewport.averageItemHeight
234+
if minIndex.offset
235+
viewport.scrollTop(minIndex.offset * viewport.averageItemHeight)
236+
#console.log "id #{padding.id} min #{minIndex.value} top #{viewport.scrollTop()} offs #{minIndex.offset * viewport.averageItemHeight}"
247237
bottomPadding.height (buffer.maxIndex() - buffer.next + 1) * viewport.averageItemHeight
248238

249239
viewport.adjustScrollTop = (height) ->
@@ -366,7 +356,7 @@ angular.module('ui.scroll', [])
366356

367357
buffer = new Buffer(itemName, $scope, linker, datasource, bufferSize)
368358

369-
viewport = new Viewport(buffer, element, controllers, $attr.padding)
359+
viewport = new Viewport(buffer, element, controllers, $attr)
370360

371361
adapter = new Adapter $attr, viewport, buffer,
372362
->
@@ -452,7 +442,7 @@ angular.module('ui.scroll', [])
452442
for wrapper in toBePrepended
453443
keepFetching = insertWrapperContent(wrapper) || keepFetching
454444
wrapper.op = 'none'
455-
adjustedPaddingHeight += wrapper.element.height()
445+
adjustedPaddingHeight += wrapper.element.outerHeight(true)
456446
viewport.adjustScrollTop(adjustedPaddingHeight)
457447

458448
# re-index the buffer
@@ -543,7 +533,6 @@ angular.module('ui.scroll', [])
543533
buffer.minIndex buffer.first
544534
adjustBufferAfterFetch rid
545535

546-
547536
# events and bindings
548537

549538
resizeAndScrollHandler = ->

0 commit comments

Comments
 (0)