overleaf/services/web/public/coffee/ide/track-changes/directives/infiniteScroll.coffee
2014-07-09 16:18:09 +01:00

42 lines
No EOL
1.2 KiB
CoffeeScript

define [
"base"
], (App) ->
App.directive "infiniteScroll", () ->
return {
link: (scope, element, attrs, ctrl) ->
innerElement = element.find(".infinite-scroll-inner")
element.css 'overflow-y': 'auto'
atEndOfListView = () ->
element.scrollTop() + element.height() >= innerElement.height() - 30
listShorterThanContainer = () ->
element.innerHeight() > @$(".change-list").outerHeight()
loadUntilFull = () ->
if (listShorterThanContainer() or atEndOfListView()) and not scope.$eval(attrs.infiniteScrollDisabled)
promise = scope.$eval(attrs.infiniteScroll)
promise.then () ->
loadUntilFull()
# @collection.fetchNextBatch
# error: (error) =>
# @hideLoading()
# @showEmptyMessageIfCollectionEmpty()
# callback(error)
# success: (collection, response) =>
# @hideLoading()
# if @collection.isAtEnd()
# @atEndOfCollection = true
# @showEmptyMessageIfCollectionEmpty()
# callback()
# else
# @loadUntilFull(callback)
element.on "scroll", (event) ->
loadUntilFull()
scope.$watch attrs.infiniteScrollInitialize, (value) ->
if value
loadUntilFull()
}