ajax-datatables-rails 0.1.2 → 0.2.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: 0e4fd5aaceea2d7736b1557eb21380da1bd58391
4
- data.tar.gz: 10e47fdae2640f298aa19785e90c3a738e5f7237
3
+ metadata.gz: 41e30fdcf9f0f29415c014aee01b74328f2faf2c
4
+ data.tar.gz: 3d58fa14346fbc70152eaa3851755e53cc6dc751
5
5
  SHA512:
6
- metadata.gz: d353c16571573cf843d9a5fd5c29752bbab75d0e37f98ec60c4767f34f7d07934f5138f08df356408e3ed0c6dc1de75a7eeae2c6e6ad914b02e48dceeba98d58
7
- data.tar.gz: 8c34fe263c1c38b37447e9328a10a65da66f36ada2e847a38cf1665ec0c9f5fc4f74054ed02fa2121a988cbabfca6228e91d5b5191b2f52383643e3791c6870c
6
+ metadata.gz: a8673b396a04b6cc7fdf3412f5602d3753d072a53bf6c293b96a0a9e82f61981a443f9a820627f8d126d2c2f989037f463931185e09318e9ef22193c084a55c0
7
+ data.tar.gz: 217019709cb55ca0a495c81632b507a81f868cf7bbd115a73b6c635ab0b69b8f5838cc2b0343524f8c18ac963e671e5ef861512c68cd2dace7f5ee42038f2dd3
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.2.0
4
+ * This version works with jQuery dataTables ver. 1.10 and it's new API syntax.
5
+ * Added `legacy` branch to repo. If your project is working with jQuery
6
+ dataTables ver. 1.9, this is the branch you need to pull, or use the last
7
+ `0.1.x` version of this gem.
8
+
3
9
  ## 0.1.2
4
10
  * Fixes `where` clause being built even when search term is an empty string.
5
11
  Thanks to [e-fisher](https://github.com/e-fisher) for spotting and fixing this.
data/README.md CHANGED
@@ -3,17 +3,25 @@
3
3
  [![Build Status](https://travis-ci.org/antillas21/ajax-datatables-rails.svg?branch=master)](https://travis-ci.org/antillas21/ajax-datatables-rails)
4
4
  [![Gem Version](https://badge.fury.io/rb/ajax-datatables-rails.svg)](http://badge.fury.io/rb/ajax-datatables-rails)
5
5
 
6
- ### Under new management
6
+ ### Versions
7
7
 
8
- > Hi,
9
- >
10
- > New maintainer here. Just to let you know that we have
11
- > released version 0.1.0 which includes breaking changes.
12
- >
13
- > Please check the [CHANGELOG](https://github.com/antillas21/ajax-datatables-rails/blob/master/CHANGELOG.md) to learn about these changes.
14
- >
15
- > All changes have been documented below.
8
+ [Datatables](http://datatables.net) recently released version 1.10 and deprecated version 1.9 which includes a new API and features.
16
9
 
10
+ If you have dataTables 1.9 in your project and want to keep using it, please use this gem's version `0.1.x` in your `Gemfile`:
11
+
12
+ ```ruby
13
+ # specific version number
14
+ gem 'ajax-datatables-rails', '0.1.2'
15
+
16
+ # or, support on datatables 1.9
17
+ gem 'ajax-datatables-rails', git: 'git://github.com/antillas21/ajax-datatables-rails.git', branch: 'legacy'
18
+ ```
19
+
20
+ If you have dataTables 1.10 in your project, then use the gem's latest version, or point to the `master` branch.
21
+
22
+
23
+
24
+ ## Description
17
25
 
18
26
  Datatables is a nifty jquery plugin that adds the ability to paginate, sort, and search your html tables. When dealing with large tables (more than a couple hundred rows) however, we run into performance issues. These can be fixed by using server-side pagination, but this breaks some datatables functionality.
19
27
 
@@ -29,13 +37,17 @@ Adding support for `Sequel`, `Mongoid` and `MongoMapper` is a planned feature fo
29
37
 
30
38
  Add these lines to your application's Gemfile:
31
39
 
32
- gem 'jquery-datatables-rails'
40
+ gem 'jquery-datatables-rails', git: 'git://github.com/rweng/jquery-datatables-rails.git', branch: 'master'
33
41
  gem 'ajax-datatables-rails'
34
42
 
35
43
  And then execute:
36
44
 
37
45
  $ bundle
38
46
 
47
+ The `jquery-datatables-rails` gem is listed as a convenience, to ease adding
48
+ jQuery dataTables to your Rails project. You can always add the plugin assets
49
+ manually via the assets pipeline. If you decide to use the `jquery-datatables-rails` gem, please refer to its installation instructions [here](https://github.com/rweng/jquery-datatables-rails).
50
+
39
51
  ## Usage
40
52
  *The following examples assume that we are setting up rails-datatables for an index of users from a `User` model*
41
53
 
@@ -179,10 +191,10 @@ Finally, the javascript to tie this all together. In the appropriate `js.coffee`
179
191
  ```coffeescript
180
192
  $ ->
181
193
  $('#users-table').dataTable
182
- bProcessing: true
183
- bServerSide: true
184
- sAjaxSource: $('#users-table').data('source')
185
- sPaginationType: 'full_numbers'
194
+ processing: true
195
+ serverSide: true
196
+ ajax: $('#users-table').data('source')
197
+ pagingType: 'full_numbers'
186
198
  # optional, if you want full pagination controls.
187
199
  # Check dataTables documentation to learn more about
188
200
  # available options.
@@ -194,10 +206,10 @@ or, if you're using plain javascript:
194
206
 
195
207
  jQuery(document).ready(function() {
196
208
  $('#users-table').dataTable({
197
- 'bProcessing': true,
198
- 'bServerSide': true,
199
- 'sAjaxSource': $('#users-table').data('source'),
200
- 'sPaginationType': 'full_numbers',
209
+ "processing": true,
210
+ "serverSide": true,
211
+ "ajax": $('#users-table').data('source')
212
+ "pagingType": "full_numbers",
201
213
  // optional, if you want full pagination controls.
202
214
  // Check dataTables documentation to learn more about
203
215
  // available options.
@@ -35,10 +35,10 @@ module AjaxDatatablesRails
35
35
 
36
36
  def as_json(options = {})
37
37
  {
38
- :sEcho => params[:sEcho].to_i,
39
- :iTotalRecords => get_raw_records.count,
40
- :iTotalDisplayRecords => filter_records(get_raw_records).count,
41
- :aaData => data
38
+ :draw => params[:draw].to_i,
39
+ :recordsTotal => get_raw_records.count,
40
+ :recordsFiltered => filter_records(get_raw_records).count,
41
+ :data => data
42
42
  }
43
43
  end
44
44
 
@@ -74,8 +74,8 @@ module AjaxDatatablesRails
74
74
  end
75
75
 
76
76
  def simple_search(records)
77
- return records unless params[:sSearch]
78
- conditions = build_conditions_for(params[:sSearch])
77
+ return records unless (params[:search] && params[:search][:value])
78
+ conditions = build_conditions_for(params[:search][:value])
79
79
  records = records.where(conditions) if conditions
80
80
  records
81
81
  end
@@ -98,7 +98,7 @@ module AjaxDatatablesRails
98
98
 
99
99
  def aggregate_query
100
100
  conditions = searchable_columns.each_with_index.map do |column, index|
101
- value = params["sSearch_#{index}".to_sym]
101
+ value = params[:columns]["#{index}"][:search][:value]
102
102
  search_condition(column, value) unless value.blank?
103
103
  end
104
104
  conditions.compact.reduce(:and)
@@ -109,20 +109,20 @@ module AjaxDatatablesRails
109
109
  end
110
110
 
111
111
  def page
112
- (params[:iDisplayStart].to_i / per_page) + 1
112
+ (params[:start].to_i / per_page) + 1
113
113
  end
114
114
 
115
115
  def per_page
116
- params.fetch(:iDisplayLength, 10).to_i
116
+ params.fetch(:length, 10).to_i
117
117
  end
118
118
 
119
119
  def sort_column
120
- sortable_columns[params[:iSortCol_0].to_i]
120
+ sortable_columns[params[:order]['0'][:column].to_i]
121
121
  end
122
122
 
123
123
  def sort_direction
124
124
  options = %w(desc asc)
125
- options.include?(params[:sSortDir_0]) ? params[:sSortDir_0].upcase : 'ASC'
125
+ options.include?(params[:order]['0'][:dir]) ? params[:order]['0'][:dir].upcase : 'ASC'
126
126
  end
127
127
  end
128
128
  end
@@ -1,3 +1,3 @@
1
1
  module AjaxDatatablesRails
2
- VERSION = '0.1.2'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -20,8 +20,28 @@ describe AjaxDatatablesRails::Base do
20
20
  end
21
21
 
22
22
  params = {
23
- :sEcho => '0', :sSortDir_0 => 'asc',
24
- :iSortCol_0 => '1', :iDisplayStart => '11'
23
+ :draw => '5',
24
+ :columns => {
25
+ "0" => {
26
+ :data => '0',
27
+ :name => '',
28
+ :searchable => true,
29
+ :orderable => true,
30
+ :search => { :value => '', :regex => false }
31
+ },
32
+ "1" => {
33
+ :data => '1',
34
+ :name => '',
35
+ :searchable => true,
36
+ :orderable => true,
37
+ :search => { :value => '', :regex => false }
38
+ }
39
+ },
40
+ :order => { "0" => { :column => '1', :dir => 'desc' } },
41
+ :start => '0',
42
+ :length => '10',
43
+ :search => { :value => '', :regex => false },
44
+ '_' => '1403141483098'
25
45
  }
26
46
  let(:view) { double('view', :params => params) }
27
47
 
@@ -44,16 +64,16 @@ describe AjaxDatatablesRails::Base do
44
64
  expect(datatable.send(:offset)).to eq(0)
45
65
  end
46
66
 
47
- it 'matches the value on view params[:iDisplayStart] minus 1' do
48
- paginated_view = double('view', :params => { :iDisplayStart => '11' })
67
+ it 'matches the value on view params[:start] minus 1' do
68
+ paginated_view = double('view', :params => { :start => '11' })
49
69
  datatable = AjaxDatatablesRails::Base.new(paginated_view)
50
70
  expect(datatable.send(:offset)).to eq(10)
51
71
  end
52
72
  end
53
73
 
54
74
  describe '#page' do
55
- it 'calculates page number from params[:iDisplayStart] and #per_page' do
56
- paginated_view = double('view', :params => { :iDisplayStart => '11' })
75
+ it 'calculates page number from params[:start] and #per_page' do
76
+ paginated_view = double('view', :params => { :start => '11' })
57
77
  datatable = AjaxDatatablesRails::Base.new(paginated_view)
58
78
  expect(datatable.send(:page)).to eq(2)
59
79
  end
@@ -65,8 +85,8 @@ describe AjaxDatatablesRails::Base do
65
85
  expect(datatable.send(:per_page)).to eq(10)
66
86
  end
67
87
 
68
- it 'matches the value on view params[:iDisplayLength]' do
69
- other_view = double('view', :params => { :iDisplayLength => 20 })
88
+ it 'matches the value on view params[:length]' do
89
+ other_view = double('view', :params => { :length => 20 })
70
90
  datatable = AjaxDatatablesRails::Base.new(other_view)
71
91
  expect(datatable.send(:per_page)).to eq(20)
72
92
  end
@@ -74,8 +94,15 @@ describe AjaxDatatablesRails::Base do
74
94
 
75
95
  describe '#sort_column' do
76
96
  it 'returns a column name from the #sorting_columns array' do
77
- sort_view = double('view', :params => { :iSortCol_0 => '1' })
78
- datatable = AjaxDatatablesRails::Base.new(view)
97
+ sort_view = double(
98
+ 'view',
99
+ :params => {
100
+ :order => {
101
+ '0' => { :column => '1' }
102
+ }
103
+ }
104
+ )
105
+ datatable = AjaxDatatablesRails::Base.new(sort_view)
79
106
  datatable.stub(:sortable_columns) { ['foo', 'bar', 'baz'] }
80
107
 
81
108
  expect(datatable.send(:sort_column)).to eq('bar')
@@ -84,13 +111,27 @@ describe AjaxDatatablesRails::Base do
84
111
 
85
112
  describe '#sort_direction' do
86
113
  it 'matches value of params[:sSortDir_0]' do
87
- sorting_view = double('view', :params => { :sSortDir_0 => 'desc' })
114
+ sorting_view = double(
115
+ 'view',
116
+ :params => {
117
+ :order => {
118
+ '0' => { :column => '1', :dir => 'desc' }
119
+ }
120
+ }
121
+ )
88
122
  datatable = AjaxDatatablesRails::Base.new(sorting_view)
89
123
  expect(datatable.send(:sort_direction)).to eq('DESC')
90
124
  end
91
125
 
92
126
  it 'can only be one option from ASC or DESC' do
93
- sorting_view = double('view', :params => { :sSortDir_0 => 'foo' })
127
+ sorting_view = double(
128
+ 'view',
129
+ :params => {
130
+ :order => {
131
+ '0' => { :column => '1', :dir => 'foo' }
132
+ }
133
+ }
134
+ )
94
135
  datatable = AjaxDatatablesRails::Base.new(sorting_view)
95
136
  expect(datatable.send(:sort_direction)).to eq('ASC')
96
137
  end
@@ -113,7 +154,7 @@ describe AjaxDatatablesRails::Base do
113
154
 
114
155
  describe 'perform' do
115
156
  let(:results) { double('Collection', :offset => [], :limit => []) }
116
- let(:view) { double('view', :params => {}) }
157
+ let(:view) { double('view', :params => params) }
117
158
  let(:datatable) { AjaxDatatablesRails::Base.new(view) }
118
159
 
119
160
  describe '#paginate_records' do
@@ -133,7 +174,7 @@ describe AjaxDatatablesRails::Base do
133
174
 
134
175
  describe '#filter_records' do
135
176
  let(:records) { double('User', :where => []) }
136
- let(:search_view) { double('view', :params => { :sSearch => 'foo' }) }
177
+ let(:search_view) { double('view', :params => params) }
137
178
 
138
179
  it 'applies search like functionality on a collection' do
139
180
  datatable = AjaxDatatablesRails::Base.new(search_view)
@@ -146,7 +187,7 @@ describe AjaxDatatablesRails::Base do
146
187
 
147
188
  describe '#filter_records with multi word model' do
148
189
  let(:records) { double('UserData', :where => []) }
149
- let(:search_view) { double('view', :params => { :sSearch => 'bar' }) }
190
+ let(:search_view) { double('view', :params => params) }
150
191
 
151
192
  it 'applies search like functionality on a collection' do
152
193
  datatable = AjaxDatatablesRails::Base.new(search_view)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ajax-datatables-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Quenneville
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-18 00:00:00.000000000 Z
11
+ date: 2014-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties