0.01
No commit activity in last 3 years
No release in over 3 years
Pagination tools when using Ember, Ember Data and Rails / Rails-Api.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 0.6.0
 Project Readme

Page Wrapper

Page Wrapper helps you add pagination to a list of resources fetched from a Rails server and rendered using Ember and Ember Data.

It contains:

  • a page model class intended to be extended to wrap a list of resources into a page
  • a set of Ember classes to help fetching, browsing, sorting and filtering the list of resources within an Ember application
  • a generator for all the Ruby and CoffeeScript files you need to paginate those resources

It requires a 3.1+ rails or rails-api application and a model to paginate. There are no constraint on which ORM or plain old Ruby object to use, or which tool to paginate or filter on the Ruby side. It is up to you to code or integrate that part (i.e.: Active Record + Kaminari, Mongoid + Kaminari, Remotely + Kaminari, etc...).

Finaly it is delegating most of the work to a set of great Ruby gems and JavaScript libraries:

Getting Started

Page Wrapper works with Rails 3.1 onwards and Ember Rails 0.6.0+.

Add this line to your application's Gemfile:

gem 'page_wrapper'

And then execute:

$ bundle

After you install Page Wrapper and add it to your Gemfile, you need to run the generator. Assuming you want to paginate Movie resources:

rails generate page_wrapper:page movie

This command will generate the Ruby and Ember classes required to paginate a Movie model and add a route to the index action of the new server movie page controller.

At that point you just need to update your Ember application routing manager to route to the new front-end movie page controller. Here is an example of a single page with an outlet setup to contain the list of movies:

# app/assets/javascripts/routes/app_router.js.coffee

App.Router = Ember.Router.extend
  location: 'hash'

  root: Ember.State.extend
    index: Ember.State.extend
      route: '/'
      connectOutlets: (router) ->
        controller = router.get('applicationController')
        controller.connectOutlet(App.MoviePageView, App.MoviePageController::firstPage())
        moviePageController = router.get('moviePageController')
        moviePageController.set('target', moviePageController)

After reloading your application you should now look at the first page and be able to interact with the pagination control to navigate the collection page by page.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request