effective_datatables 2.8.0 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 254850f988b403fcd7bab23babac6af5905a7ee4
4
- data.tar.gz: c5722ac344bc0798bbe8ddab55582bd5b4c0fead
3
+ metadata.gz: 9720cc5d9e1023fcb5acaf50e746a9fef4fc23cc
4
+ data.tar.gz: f7e27f1764ef6c995222f2fdc0a5590bc3ea6071
5
5
  SHA512:
6
- metadata.gz: 47d8354626af6be0d1a8176e5609d4f9e7ee58e2a851845ff4d37260e86f4eb3ad344382ac64fd3e9a0755d8d663b178fb7f6c4355bb968229cb942853733aaa
7
- data.tar.gz: ed8ab8398e717bea338457560fdbf2fb25f1e008069a73b34d9d20389587e1f5538c14b11028b02fa71780b5a7b3f073ec4a4c492e3f19b9199228e9cfc022cd
6
+ metadata.gz: aea28e65e30b7dd9d5e7f7e3da335bdec3ef4718748598f28d9d1e294b2bc4a1669cd5d4534019de809242b08204339a3f91212a3f176f4d6daf234a5f8572dd
7
+ data.tar.gz: 5ed6a4f01e6f5f7071730162bbadec00a8cf5cd569034ef80c51640fab482e9644724af3d1ded7d795cf6a8b1d6700b75ce444ef2f4b8b5b3dfa8a6decfa557e
data/README.md CHANGED
@@ -48,33 +48,27 @@ We create a model, initialize it within our controller, then render it from a vi
48
48
 
49
49
  ### The Model
50
50
 
51
- Start by creating a model in the `/app/models/effective/datatables/` directory.
52
-
53
- Any `Effective::Datatable` models that exist in this directory will be automatically detected and 'just work'.
51
+ Start by creating a new datatable.
54
52
 
55
53
  Below is a very simple example file, which we will expand upon later.
56
54
 
57
- This model exists at `/app/models/effective/datatables/posts.rb`:
55
+ This model exists at `/app/datatables/posts_datatable.rb`:
58
56
 
59
57
  ```ruby
60
- module Effective
61
- module Datatables
62
- class Posts < Effective::Datatable
63
- datatable do
64
- table_column :id
65
- table_column :user # if Post belongs_to :user
66
- table_column :comments # if Post has_many :comments
67
- table_column :title
68
- table_column :created_at
69
- actions_column
70
- end
71
-
72
- def collection
73
- Post.all
74
- end
58
+ class PostsDatatable < Effective::Datatable
59
+ datatable do
60
+ table_column :id
61
+ table_column :user # if Post belongs_to :user
62
+ table_column :comments # if Post has_many :comments
63
+ table_column :title
64
+ table_column :created_at
65
+ actions_column
66
+ end
75
67
 
76
- end
68
+ def collection
69
+ Post.all
77
70
  end
71
+
78
72
  end
79
73
  ```
80
74
 
@@ -85,7 +79,7 @@ We're going to display this DataTable on the posts#index action
85
79
  ```ruby
86
80
  class PostsController < ApplicationController
87
81
  def index
88
- @datatable = Effective::Datatables::Posts.new
82
+ @datatable = PostsDatatable.new
89
83
  end
90
84
  end
91
85
  ```
@@ -116,48 +110,42 @@ Once your controller and view are set up to render a Datatable, the model is the
116
110
 
117
111
  This single model file contains just 1 required method and responds to only 3 DSL commands.
118
112
 
119
- Each `Effective::Datatable` model must be defined in the `/app/models/effective/datatables/` directory.
120
-
121
- For example: `/app/models/effective/datatables/posts.rb`:
113
+ For example: `/app/datatables/posts_datatable.rb`:
122
114
 
123
115
  ```ruby
124
- module Effective
125
- module Datatables
126
- class Posts < Effective::Datatable
127
- datatable do
128
- default_order :created_at, :desc
129
- default_entries 25
130
-
131
- table_column :id, :visible => false
116
+ class PostsDatatable < Effective::Datatable
117
+ datatable do
118
+ default_order :created_at, :desc
119
+ default_entries 25
132
120
 
133
- table_column :created_at, :width => '25%'
121
+ table_column :id, :visible => false
134
122
 
135
- table_column :updated_at, :proc => Proc.new { |post| nicetime(post.updated_at) } # just a standard helper as defined in helpers/application_helper.rb
123
+ table_column :created_at, :width => '25%'
136
124
 
137
- table_column :user
125
+ table_column :updated_at, :proc => Proc.new { |post| nicetime(post.updated_at) } # just a standard helper as defined in helpers/application_helper.rb
138
126
 
139
- table_column :post_category_id, :filter => {:as => :select, :collection => Proc.new { PostCategory.all } } do |post|
140
- post.post_category.name.titleize
141
- end
127
+ table_column :user
142
128
 
143
- array_column :comments do |post|
144
- content_tag(:ul) do
145
- post.comments.where(:archived => false).map do |comment|
146
- content_tag(:li, comment.title)
147
- end.join('').html_safe
148
- end
149
- end
129
+ table_column :post_category_id, :filter => {:as => :select, :collection => Proc.new { PostCategory.all } } do |post|
130
+ post.post_category.name.titleize
131
+ end
150
132
 
151
- table_column :title, :label => 'Post Title', :class => 'col-title'
152
- actions_column
133
+ array_column :comments do |post|
134
+ content_tag(:ul) do
135
+ post.comments.where(:archived => false).map do |comment|
136
+ content_tag(:li, comment.title)
137
+ end.join('').html_safe
153
138
  end
139
+ end
154
140
 
155
- def collection
156
- Post.where(:archived => false).includes(:post_category)
157
- end
141
+ table_column :title, :label => 'Post Title', :class => 'col-title'
142
+ actions_column
143
+ end
158
144
 
159
- end
145
+ def collection
146
+ Post.where(:archived => false).includes(:post_category)
160
147
  end
148
+
161
149
  end
162
150
  ```
163
151
 
@@ -169,7 +157,7 @@ It can be as simple or as complex as you'd like:
169
157
 
170
158
  ```ruby
171
159
  def collection
172
- Posts.all
160
+ Post.all
173
161
  end
174
162
  ```
175
163
 
@@ -206,27 +194,23 @@ Don't want to use ActiveRecord? Not a problem.
206
194
  Define your collection as an Array of Arrays, declare only array_columns, and everything works as expected.
207
195
 
208
196
  ```ruby
209
- module Effective
210
- module Datatables
211
- class ArrayBackedDataTable < Effective::Datatable
212
- datatable do
213
- array_column :id
214
- array_column :first_name
215
- array_column :last_name
216
- array_column :email
217
- end
218
-
219
- def collection
220
- [
221
- [1, 'June', 'Huang', 'june@einstein.com'],
222
- [2, 'Leo', 'Stubbs', 'leo@einstein.com'],
223
- [3, 'Quincy', 'Pompey', 'quincy@einstein.com'],
224
- [4, 'Annie', 'Wojcik', 'annie@einstein.com'],
225
- ]
226
- end
197
+ class ArrayBackedDatatable < Effective::Datatable
198
+ datatable do
199
+ array_column :id
200
+ array_column :first_name
201
+ array_column :last_name
202
+ array_column :email
203
+ end
227
204
 
228
- end
205
+ def collection
206
+ [
207
+ [1, 'June', 'Huang', 'june@einstein.com'],
208
+ [2, 'Leo', 'Stubbs', 'leo@einstein.com'],
209
+ [3, 'Quincy', 'Pompey', 'quincy@einstein.com'],
210
+ [4, 'Annie', 'Wojcik', 'annie@einstein.com'],
211
+ ]
229
212
  end
213
+
230
214
  end
231
215
  ```
232
216
 
@@ -562,7 +546,7 @@ end
562
546
  As well, you need to change the controller where you define the datatable to be aware of the scope params.
563
547
 
564
548
  ```ruby
565
- @datatable = Effective::Datatables::Posts.new(params[:scopes])
549
+ @datatable = PostsDatatable.new(params[:scopes])
566
550
  ```
567
551
 
568
552
  And to display the scopes anywhere in your view:
@@ -741,7 +725,7 @@ In your controller:
741
725
  ```ruby
742
726
  class PostsController < ApplicationController
743
727
  def index
744
- @datatable = Effective::Datatables::Posts.new(:user_id => current_user.try(:id))
728
+ @datatable = PostsDatatable.new(:user_id => current_user.try(:id))
745
729
  end
746
730
  end
747
731
  ```
@@ -749,23 +733,18 @@ end
749
733
  And then in your datatable:
750
734
 
751
735
  ```ruby
752
- module Effective
753
- module Datatables
754
- class Posts < Effective::Datatable
755
- datatable do
756
- if attributes[:user_id].blank?
757
- table_column :user_id { |post| post.user.email }
758
- end
759
- end
760
-
761
- def collection
762
- if attributes[:user_id]
763
- Post.where(user_id: attributes[:user_id])
764
- else
765
- Post.all
766
- end
767
- end
736
+ class PostsDatatable < Effective::Datatable
737
+ datatable do
738
+ if attributes[:user_id].blank?
739
+ table_column :user_id { |post| post.user.email }
740
+ end
741
+ end
768
742
 
743
+ def collection
744
+ if attributes[:user_id]
745
+ Post.where(user_id: attributes[:user_id])
746
+ else
747
+ Post.all
769
748
  end
770
749
  end
771
750
  end
@@ -776,28 +755,24 @@ end
776
755
  Any non-private methods defined in the datatable model will be available to your table_columns and evaluated in the view_context.
777
756
 
778
757
  ```ruby
779
- module Effective
780
- module Datatables
781
- class Posts < Effective::Datatable
782
- def format_post_title(post)
783
- if post.title.start_with?('important')
784
- link_to(post.title.upcase, post_path(post))
785
- else
786
- link_to(post.title, post_path(post))
787
- end
788
- end
789
-
790
- datatable do
791
- table_column :title do |post|
792
- format_post_title(post)
793
- end
794
- end
758
+ class PostsDatatable < Effective::Datatable
759
+ def format_post_title(post)
760
+ if post.title.start_with?('important')
761
+ link_to(post.title.upcase, post_path(post))
762
+ else
763
+ link_to(post.title, post_path(post))
764
+ end
765
+ end
795
766
 
796
- def collection
797
- Post.all
798
- end
767
+ datatable do
768
+ table_column :title do |post|
769
+ format_post_title(post)
799
770
  end
800
771
  end
772
+
773
+ def collection
774
+ Post.all
775
+ end
801
776
  end
802
777
  ```
803
778
 
@@ -809,13 +784,8 @@ end
809
784
  ```
810
785
 
811
786
  ```ruby
812
- module Effective
813
- module Datatables
814
- class Posts < Effective::Datatable
815
- include PostsHelper
816
-
817
- end
818
- end
787
+ class PostsDatatable < Effective::Datatable
788
+ include PostsHelper
819
789
  end
820
790
  ```
821
791
 
@@ -928,33 +898,6 @@ rescue_from Effective::AccessDenied do |exception|
928
898
  end
929
899
  ```
930
900
 
931
- ## Examples
932
-
933
- ### Search by a belongs_to objects' field
934
-
935
- In this example, a User belongs_to an Applicant. But instead of using the built in belongs_to functionality and displaying a dropdown of users, instead we want to search by the user's email address:
936
-
937
- ```ruby
938
- module Effective
939
- module Datatables
940
- class Applicants < Effective::Datatable
941
- datatable do
942
- table_column :id, visible: true
943
-
944
- table_column :user, :type => :string, :column => 'users.email' do |applicant|
945
- link_to applicant.user.try(:email), edit_admin_user_path(applicant.user)
946
- end
947
- end
948
-
949
- def collection
950
- col = Applicant.joins(:user).includes(:user).references(:user)
951
- end
952
- end
953
- end
954
- end
955
- ```
956
-
957
-
958
901
  ## License
959
902
 
960
903
  MIT License. Copyright [Code and Effect Inc.](http://www.codeandeffect.com/)
@@ -2,7 +2,7 @@ module EffectiveDatatables
2
2
  class Engine < ::Rails::Engine
3
3
  engine_name 'effective_datatables'
4
4
 
5
- config.autoload_paths += Dir["#{config.root}/app/models/concerns"]
5
+ config.autoload_paths += Dir["#{config.root}/app/models/concerns", '/app/datatables/**/']
6
6
 
7
7
  # Include Helpers to base application
8
8
  initializer 'effective_datatables.action_controller' do |app|
@@ -1,3 +1,3 @@
1
1
  module EffectiveDatatables
2
- VERSION = '2.8.0'.freeze
2
+ VERSION = '2.9.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_datatables
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.0
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-06 00:00:00.000000000 Z
11
+ date: 2017-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails