Sha256: eafb3b5e3276d1078bf7cc492d0909a29541d5582ac6721b996176441012c82d

Contents?: true

Size: 1.72 KB

Versions: 10

Compression:

Stored size: 1.72 KB

Contents

class Pagination

  init: (@selector, options = {}, @debugMode=false) ->
    @log('initialize')

    @options = $.extend({container: null, timeout: 2500, scrollTo: 0}, options)

    @setupListeners()

  pushStateSupported: ->
    $.support.pjax

  setupListeners: ->
    @log('setup listeners')

    if @pushStateSupported()
      @configureWithPushState()
    else
      @configureWithoutPushState()

  configureWithPushState: ->
    @log('configuring with pushState support')

    $.pjax.defaults.scrollTo = @options.scrollTo;

    $(document).pjax(@selector, @options)
      .on('pjax:beforeSend', (e, xhr, err)=>
        @requestStart(e, xhr, err)
      )
      .on('pjax:success', (e, xhr, err) =>
        @requestEnd(e, xhr, err)
      )

  configureWithoutPushState: ->
    @log('configuring without pushState support')

    $(document).on 'click', @selector, (e)=>
      e.preventDefault();

      $.ajax({
        url: $(e.target).attr('href'),
        context: @,
        beforeSend: (xhr)->
          xhr.setRequestHeader('X-PJAX', 'true');
          @requestStart(e, xhr, null)
        success: (data, textStatus, xhr)->
          @requestEnd(e, xhr, null)
      })

  requestStart: (e, xhr, err)->
    @log('request is starting')
    $(@options.container).find('table tbody').css('opacity', 0.5)

  requestEnd: (e, xhr, err)->
    @log('request has finished')

    if not @pushStateSupported()
      $(@options.container).html(xhr.responseText)

      @log(typeof @options.scrollTo)

      if typeof @options.scrollTo is 'number'
        $(document).scrollTop(@options.scrollTo)

    $(@options.container).find('table tbody').css('opacity', 1)

  log: (message) ->
    console.log("[Pagination] " + message) if @debugMode

@Pagination = Pagination

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
woople-theme-0.10.0 app/assets/javascripts/woople-theme/pagination/pagination.js.coffee
woople-theme-0.9.0 app/assets/javascripts/woople-theme/pagination/pagination.js.coffee
woople-theme-0.8.19 app/assets/javascripts/woople-theme/pagination/pagination.js.coffee
woople-theme-0.8.18 app/assets/javascripts/woople-theme/pagination/pagination.js.coffee
woople-theme-0.8.17 app/assets/javascripts/woople-theme/pagination/pagination.js.coffee
woople-theme-0.8.16 app/assets/javascripts/woople-theme/pagination/pagination.js.coffee
woople-theme-0.8.15 app/assets/javascripts/woople-theme/pagination/pagination.js.coffee
woople-theme-0.8.14 app/assets/javascripts/woople-theme/pagination/pagination.js.coffee
woople-theme-0.8.13 app/assets/javascripts/woople-theme/pagination/pagination.js.coffee
woople-theme-0.8.12 app/assets/javascripts/woople-theme/pagination/pagination.js.coffee