Sha256: ed88c79d137ea7ccbef82b7f21cea65dd5aead1deaaf2a86f85d43c720534fd8

Contents?: true

Size: 907 Bytes

Versions: 6

Compression:

Stored size: 907 Bytes

Contents

class @InfiniteScroll

  constructor: (options)->
    @$el = options.$el ? $('.infinite-scroll')
    @offset = options.offset ? 50
    @load = options.load
    @success = options.success
    @error = options.error

    @$window = $(window)
    @$document = $(document)
    @$window.scroll _.bind(@onScroll, @)

  onScroll: ->
    return if @$el.hasClass('loading') or @$el.hasClass('done')
    return unless @$el.is(':visible')
    return unless @$window.scrollTop() >= (@$document.height() - @$window.height() - @offset)

    @loadMore()

  loadMore: ->
    xhr = @load(@$el)
    return unless xhr

    @$el.addClass('loading')
    xhr.done (html, status, e)=>
      @$el.removeClass('loading')
      if html is "" or e?.status is 204
        @$el.addClass('done')
      else
        @$el.append(html)
      @success() if @success
    xhr.fail =>
      @$el.removeClass('loading')
      @error() if @error

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
houston-core-0.7.0.beta3 app/assets/javascripts/houston/app/infinite_scroll.coffee
houston-core-0.7.0.beta2 app/assets/javascripts/houston/app/infinite_scroll.coffee
houston-core-0.7.0.beta app/assets/javascripts/houston/app/infinite_scroll.coffee
houston-core-0.6.3 app/assets/javascripts/app/infinite_scroll.coffee
houston-core-0.6.2 app/assets/javascripts/app/infinite_scroll.coffee
houston-core-0.6.1 app/assets/javascripts/app/infinite_scroll.coffee