page_wrapper 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -1,24 +1,81 @@
1
- # Page Wrapper
1
+ ## Page Wrapper ##
2
2
 
3
- Pagination tools when using Ember, Ember Data and Rails / Rails-Api.
3
+ Page Wrapper helps you add pagination to a list of resources fetched
4
+ from a Rails server and rendered using Ember and Ember Data.
4
5
 
5
- ## Installation
6
+ It contains:
7
+
8
+ * a page model class intended to be extended to wrap a list of resources
9
+ into a page
10
+ * a set of Ember classes to help fetching, browsing, sorting and
11
+ filtering the list of resources within an Ember application
12
+ * a generator for all the Ruby and CoffeeScript files you need to paginate
13
+ those resources
14
+
15
+ It requires a 3.1+ rails or rails-api application and a model to
16
+ paginate. There are no constraint on which ORM or plain old Ruby object
17
+ to use, or which tool to paginate or filter on the Ruby side. It is up
18
+ to you to code or integrate that part (i.e.: Active Record + Kaminari,
19
+ Mongoid + Kaminari, Remotely + Kaminari, etc...).
20
+
21
+ Finaly it is delegating most of the work to a set of great Ruby gems and
22
+ JavaScript libraries:
23
+
24
+ * [Rails API](https://github.com/spastorino/rails-api) or [Rails](http://rubyonrails.org/) for the web server
25
+ * [Active Model Serializers](https://github.com/josevalim/active_model_serializers/) to serialize the page instance and its collection
26
+ * [Ember Rails](https://github.com/emberjs/ember-rails) that comes with
27
+ [Ember](http://emberjs.com/) and [Ember Data](https://github.com/emberjs/data) for fetching the data from the browser and rendering the collections and browse it page by page
28
+
29
+ ## Getting Started ##
30
+
31
+ Page Wrapper works with Rails 3.1 onwards and Ember Rails 0.6.0+.
6
32
 
7
33
  Add this line to your application's Gemfile:
8
34
 
9
- gem 'page_wrapper'
35
+ ```ruby
36
+ gem 'page_wrapper'
37
+ ```
10
38
 
11
39
  And then execute:
12
40
 
13
- $ bundle
41
+ ```console
42
+ $ bundle
43
+ ```
44
+
45
+ After you install Page Wrapper and add it to your Gemfile, you need to
46
+ run the generator. Assuming you want to paginate *Movie* resources:
47
+
48
+ ```console
49
+ rails generate page_wrapper:page movie
50
+ ```
51
+
52
+ This command will generate the Ruby and Ember classes required to
53
+ paginate a **Movie** model and add a route to the index action of the
54
+ new server movie page controller.
14
55
 
15
- Or install it yourself as:
56
+ At that point you just need to update your Ember application routing
57
+ manager to route to the new front-end movie page controller. Here is an
58
+ example of a single page with an outlet setup to contain the list of
59
+ movies:
16
60
 
17
- $ gem install page_wrapper
61
+ ```coffeescript
62
+ # app/assets/javascripts/routes/app_router.js.coffee
18
63
 
19
- ## Usage
64
+ App.Router = Ember.Router.extend
65
+ location: 'hash'
20
66
 
21
- TODO: Write usage instructions here
67
+ root: Ember.State.extend
68
+ index: Ember.State.extend
69
+ route: '/'
70
+ connectOutlets: (router) ->
71
+ controller = router.get('applicationController')
72
+ controller.connectOutlet(App.MoviePageView, App.MoviePageController::firstPage())
73
+ moviePageController = router.get('moviePageController')
74
+ moviePageController.set('target', moviePageController)
75
+ ```
76
+ After reloading your application you should now look at the first page
77
+ and be able to interact with the pagination control to navigate
78
+ the collection page by page.
22
79
 
23
80
  ## Contributing
24
81
 
@@ -1,3 +1,3 @@
1
1
  module PageWrapper
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,15 +1,16 @@
1
+ <%- names = class_name.underscore.pluralize -%>
1
2
  class <%= class_name.camelize %>Page < PageWrapper::Model
2
- attr_reader :<%= class_name.underscore.pluralize %>
3
+ attr_reader :<%= names %>
3
4
 
4
5
  def fetch_records(page, options)
5
6
  # TODO: customize the logic below and consider moving it into
6
7
  # a class method <%= class_name.camelize %>.paginated_query
7
8
  # and simplify this method to a one-liner:
8
9
  #
9
- # @<%= class_name.underscore.pluralize %> = <%= class_name.camelize %>.paginated_query(page, options)
10
+ # @<%= names %> = <%= class_name.camelize %>.paginated_query(page, options)
10
11
 
11
- result = <%= class_name.camelize %>.page(page)
12
- result = result.per(options[:per_page]) if options[:per_page]
13
- result
12
+ @<%= names %> = <%= class_name.camelize %>.page(page)
13
+ @<%= names %> = @<%= names %>.per(options[:per_page]) if options[:per_page]
14
+ @<%= names %>
14
15
  end
15
16
  end
@@ -7,17 +7,19 @@
7
7
  <table class="table table-bordered table-striped">
8
8
  <thead>
9
9
  <tr>
10
- <th>Field1</th>
11
- <th>Field2</th>
10
+ <th>Id</th>
11
+ <th>Title</th>
12
+ <th>Year</th>
12
13
  </tr>
13
14
  </thead>
14
15
 
15
16
  <tbody>
16
17
  {{#if controller.content.isLoaded}}
17
- {{#each controller.currentPage.<%= class_name.camelize.pluralize %>}}
18
+ {{#each controller.currentPage.<%= class_name.underscore.pluralize %>}}
18
19
  <tr>
19
- <td>{{field1}}</td>
20
- <td>{{field2}}</td>
20
+ <td>{{id}}</td>
21
+ <td>{{title}}</td>
22
+ <td>{{year}}</td>
21
23
  </tr>
22
24
  {{/each}}
23
25
  {{/if}}
@@ -1,2 +1,2 @@
1
1
  App.<%= class_name.camelize %>PageView = Ember.View.extend
2
- templateName: '<%= class_name.underscore %>'
2
+ templateName: '<%= class_name.underscore %>_page'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -88,7 +88,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
88
  version: '0'
89
89
  segments:
90
90
  - 0
91
- hash: 3175872921732100907
91
+ hash: 1937236751138719714
92
92
  required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  none: false
94
94
  requirements:
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  version: '0'
98
98
  segments:
99
99
  - 0
100
- hash: 3175872921732100907
100
+ hash: 1937236751138719714
101
101
  requirements: []
102
102
  rubyforge_project:
103
103
  rubygems_version: 1.8.23