Sha256: 816ace6734d097fda5bcb9d7392b6f5def8047f9ec18432bde3bef58faba9fb5

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

angular.module('EssayApp.services')
  .factory('paginateArrayService', [() ->

    class Paginate
      DEFAULT:
        page: 1
        perpage: 10
      all_items: []
      items: []
      prev_page_available: false
      next_page_available: false

      constructor: (data, params = {})->
        return null unless data?.length > 0
        @params = $.extend({}, @DEFAULT, params)
        @all_items = data
        @pages_count = Math.ceil(@all_items.length / @params.perpage)

      page: (pagenum = undefined)->
        if angular.isUndefined(pagenum)
          pagenum = @params?.page || 1
        else
          pagenum = parseInt(pagenum, 10) unless angular.isNumber(pagenum)
        if (pagenum >= 1) and (pagenum <= @pages_count) and ((pagenum != @params.page) or
            (@items.length is 0 and @all_items.length > 0))
          @params.page = pagenum
          @prev_page_available = @params.page > 1
          @next_page_available = @params.page < @pages_count

          _start = (@params.page - 1) * @params.perpage
          _end = _start + @params.perpage
          @items = @all_items[_start..._end]
        @items

      prev_page: -> @page(@params.page - 1)
      next_page: -> @page(@params.page + 1)

    api = {
      paginate: (data, params = {})-> new Paginate(data, params)
    }

    return api
  ])

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
translation_cms-0.1.5 app/assets/javascripts/app/services/paginate_array_service.js.coffee