effective_datatables 2.2.1 → 2.2.2

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: 9d45b85e4665f5cb20ffc11ab6df85d3a47e9c53
4
- data.tar.gz: 86064596ceb37d6affb700b5c229fcb597b34e3b
3
+ metadata.gz: 23149a11f5d924187b057923850c1883278bed56
4
+ data.tar.gz: af8cebc2b8ed50a9c1ab9bf3ea9d76a6572ef3bc
5
5
  SHA512:
6
- metadata.gz: 3154e33721c73b85cdb73850bfd58914d3e73a17327b89239fa3a301593576fe17848664e62aa9862d7f9befbab057277c04f6a8ff5f40163b376669648ff173
7
- data.tar.gz: 40635838ad44be5392c4d0543df4333ef41c51c29e1419a3d047c1f030eb3da29114dd375724fe8b4b0d9e23f5d528a27ac911ad0efb5195ec59441aae88a13c
6
+ metadata.gz: b9f8b343da4185651b0e55e4d2b72ded088cb360962d31e71da5886000c26403046c69c2c0c4445c71900adf42cf00c879393823fe66b0592cbaa63286c656d5
7
+ data.tar.gz: b564536eb290f27fdf2721dd37902dcfa441a7224eab2703edc27d24037dbe1f1674597df8fe3baa2af808d755d0c0b9424b93b36e6817e4c16d65143c80aa44
@@ -1,8 +1,10 @@
1
1
  initializeDataTables = ->
2
- $('table[data-effective-datatables-table]').each ->
2
+ $('table.effective-datatable').each ->
3
3
  return if $.fn.DataTable.fnIsDataTable(this)
4
4
 
5
5
  datatable = $(this)
6
+ simple = (datatable.data('simple') == true)
7
+ input_js_options = datatable.data('input-js-options') || {}
6
8
 
7
9
  init_options =
8
10
  ajax: { url: datatable.data('source'), type: 'POST' }
@@ -45,7 +47,7 @@ initializeDataTables = ->
45
47
  columns: ':visible:not(.col-actions)'
46
48
  },
47
49
  ]
48
- colReorder: true
50
+ colReorder: !simple
49
51
  columns: datatable.data('columns')
50
52
  deferLoading: [datatable.data('display-records'), datatable.data('total-records')]
51
53
  deferRender: true
@@ -79,10 +81,6 @@ initializeDataTables = ->
79
81
 
80
82
  $th.addClass('initialized')
81
83
 
82
- if datatable.data('effective-datatables-table') == 'simple'
83
- init_options['lengthMenu'] = [-1] # Show all results
84
- init_options['dom'] = "<'row'r>t" # Just show the table
85
-
86
84
  # Sets up the proper events for each input
87
85
  initializeFilterEvents = (th) ->
88
86
  th.find('input,select').each (_, input) ->
@@ -101,8 +99,12 @@ initializeDataTables = ->
101
99
  table = obj.closest('table.dataTable')
102
100
  table.DataTable().column("#{obj.data('column-name')}:name").search(obj.val()).draw()
103
101
 
102
+ if simple
103
+ init_options['dom'] = "<'row'<'col-sm-12'tr>>" # Just show the table
104
+ datatable.addClass('sort-hidden')
105
+
104
106
  # Let's actually initialize the table now
105
- table = datatable.dataTable(init_options)
107
+ table = datatable.dataTable(jQuery.extend(init_options, input_js_options))
106
108
 
107
109
  # Apply EffectiveFormInputs to the Show x per page dropdown
108
110
  if datatable.data('effective-form-inputs')
@@ -1,3 +1,4 @@
1
+ // Use asset_data_uri to prevent 3 additional GET requests for icons
1
2
  table.dataTable thead .sorting {
2
3
  background-image: url(<%= asset_data_uri('dataTables/sort_both.png') %>);
3
4
  background-position: 100% 70%;
@@ -13,14 +14,16 @@ table.dataTable thead .sorting_desc {
13
14
  background-position: 100% 70%;
14
15
  }
15
16
 
16
- table.dataTable thead .sorting:after {
17
- content: '';
18
- }
19
- table.dataTable thead .sorting_asc:after {
20
- content: '';
21
- }
22
- table.dataTable thead .sorting_desc:after {
23
- content: '';
17
+ // Override bootstrap default glyphicons
18
+ table.dataTable thead .sorting:after { content: ''; }
19
+ table.dataTable thead .sorting_asc:after { content: ''; }
20
+ table.dataTable thead .sorting_desc:after { content: ''; }
21
+
22
+ // Table header
23
+ table.dataTable thead > tr > th.sorting_asc,
24
+ table.dataTable thead > tr > th.sorting_desc,
25
+ table.dataTable thead > tr > th.sorting {
26
+ padding-right: 18px;
24
27
  }
25
28
 
26
29
  table.dataTable thead th {
@@ -32,12 +35,10 @@ table.dataTable thead th {
32
35
  .form-group { margin-bottom: 0px; font-weight: normal; }
33
36
  }
34
37
 
35
- table.dataTable thead > tr > th.sorting_asc,
36
- table.dataTable thead > tr > th.sorting_desc,
37
- table.dataTable thead > tr > th.sorting {
38
- padding-right: 18px;
39
- white-space: nowrap;
40
- }
38
+ // Sorting disabled
39
+ table.dataTable.sort-hidden thead .sorting { background-image: none; }
40
+ table.dataTable.sort-hidden thead .sorting_asc { background-image: none; }
41
+ table.dataTable.sort-hidden thead .sorting_desc { background-image: none; }
41
42
 
42
43
  // Filter bar
43
44
  table.dataTable .form-group { width: 100%; margin-left: 0px; margin-right: 0px; }
@@ -1,17 +1,15 @@
1
1
  module EffectiveDatatablesHelper
2
- def render_datatable(datatable, opts = {}, &block)
2
+ def render_datatable(datatable, input_js_options = nil)
3
3
  datatable.view = self
4
- locals = {style: :full, filterable: true, sortable: true, table_class: 'table-bordered table-striped'}.merge(opts)
5
-
6
- render partial: 'effective/datatables/datatable', locals: locals.merge(datatable: datatable)
4
+ render partial: 'effective/datatables/datatable',
5
+ locals: { datatable: datatable, input_js_options: input_js_options.try(:to_json) }
7
6
  end
8
7
 
9
- def render_simple_datatable(datatable, opts = {})
8
+ def render_simple_datatable(datatable, input_js_options = nil)
10
9
  datatable.view = self
11
- datatable.per_page = :all
12
- locals = {style: :simple, filterable: false, sortable: false, table_class: 'table-bordered table-striped sorting-hidden'}.merge(opts)
13
-
14
- render partial: 'effective/datatables/datatable', locals: locals.merge(datatable: datatable)
10
+ datatable.simple = true
11
+ render partial: 'effective/datatables/datatable',
12
+ locals: {datatable: datatable, input_js_options: input_js_options.try(:to_json) }
15
13
  end
16
14
 
17
15
  def datatable_default_order(datatable)
@@ -20,8 +18,8 @@ module EffectiveDatatablesHelper
20
18
 
21
19
  # https://datatables.net/reference/option/columns
22
20
  def datatable_columns(datatable)
23
- form_builder = nil
24
- simple_form_for(datatable, url: '#', html: {id: "#{datatable.to_param}-form"}) { |f| form_builder = f }
21
+ form = nil
22
+ simple_form_for(datatable, url: '#', html: {id: "#{datatable.to_param}-form"}) { |f| form = f }
25
23
 
26
24
  datatable.table_columns.map do |name, options|
27
25
  {
@@ -30,17 +28,16 @@ module EffectiveDatatablesHelper
30
28
  className: options[:class],
31
29
  width: options[:width],
32
30
  responsivePriority: (options[:responsivePriority] || 10000), # 10,000 is datatables default
33
- sortable: options[:sortable],
31
+ sortable: (options[:sortable] && !datatable.simple?),
34
32
  visible: (options[:visible].respond_to?(:call) ? datatable.instance_exec(&options[:visible]) : options[:visible]),
35
- filterHtml: datatable_header_filter(form_builder, name, options),
33
+ filterHtml: (datatable_header_filter(form, name, options) unless datatable.simple?),
36
34
  filterSelectedValue: options[:filter][:selected]
37
35
  }
38
36
  end.to_json()
39
37
  end
40
38
 
41
- def datatable_header_filter(form, name, opts, filterable = true)
42
- return render(partial: opts[:header_partial], locals: {form: form, name: (opts[:label] || name), column: opts, filterable: filterable}) if opts[:header_partial].present?
43
- return content_tag(:p, opts[:label] || name) if filterable == false
39
+ def datatable_header_filter(form, name, opts)
40
+ return render(partial: opts[:header_partial], locals: {form: form, name: (opts[:label] || name), column: opts}) if opts[:header_partial].present?
44
41
 
45
42
  case opts[:filter][:type]
46
43
  when :string, :text, :number
@@ -1,6 +1,9 @@
1
1
  module Effective
2
2
  class Datatable
3
- attr_accessor :total_records, :display_records, :view, :attributes
3
+ attr_accessor :display_records, :view, :attributes
4
+
5
+ # These two options control the render behaviour of a datatable
6
+ attr_accessor :table_html_class, :simple
4
7
 
5
8
  delegate :render, :controller, :link_to, :mail_to, :number_to_currency, :to => :@view
6
9
 
@@ -121,6 +124,17 @@ module Effective
121
124
  @order_direction = nil
122
125
  end
123
126
 
127
+ def table_html_class
128
+ @table_html_class.presence || 'table table-bordered table-striped'
129
+ end
130
+
131
+ # When simple only a table will be rendered with
132
+ # no sorting, no filtering, no export buttons, no pagination, no per page, no colReorder
133
+ # default sorting only, default visibility only, all records returned, and responsive enabled
134
+ def simple?
135
+ @simple == true
136
+ end
137
+
124
138
  protected
125
139
 
126
140
  def params
@@ -75,6 +75,8 @@ module Effective
75
75
  end
76
76
 
77
77
  def per_page
78
+ return 9999999 if simple?
79
+
78
80
  length = (params[:length].presence || display_entries).to_i
79
81
 
80
82
  if length == -1
@@ -1,16 +1,13 @@
1
1
  :ruby
2
2
  effective_datatable_params = {
3
- :id => "#{datatable.to_param}-table",
4
- :class => ('table ' + table_class.to_s),
5
- :cellpadding => 0,
6
- :cellspacing => 0,
7
- :border => 0,
8
- :width => '100%',
9
- :data => {
10
- 'effective-datatables-table' => style,
3
+ id: "#{datatable.to_param}-table",
4
+ class: "#{datatable.table_html_class}",
5
+ data: {
11
6
  'effective-form-inputs' => defined?(EffectiveFormInputs),
12
7
  'columns' => datatable_columns(datatable),
13
- 'source' => effective_datatables.datatable_path(datatable, {:format => 'json'}.merge(:attributes => datatable.attributes)).chomp('?'),
8
+ 'input-js-options' => local_assigns[:input_js_options],
9
+ 'simple' => datatable.simple?.to_s,
10
+ 'source' => effective_datatables.datatable_path(datatable, {format: 'json'}.merge(attributes: datatable.attributes)).chomp('?'),
14
11
  'default-order' => datatable_default_order(datatable),
15
12
  'display-entries' => datatable.display_entries,
16
13
  'display-records' => (datatable.to_json[:recordsFiltered] || 0),
@@ -1,3 +1,3 @@
1
1
  module EffectiveDatatables
2
- VERSION = '2.2.1'.freeze
2
+ VERSION = '2.2.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_datatables
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.2.2
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: 2015-12-04 00:00:00.000000000 Z
11
+ date: 2015-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: coffee-rails
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: kaminari
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: sass-rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: haml-rails
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: simple_form
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  description: Uniquely powerful server-side searching, sorting and filtering of any
@@ -103,10 +103,12 @@ executables: []
103
103
  extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
+ - MIT-LICENSE
107
+ - README.md
108
+ - Rakefile
106
109
  - app/assets/images/dataTables/sort_asc.png
107
110
  - app/assets/images/dataTables/sort_both.png
108
111
  - app/assets/images/dataTables/sort_desc.png
109
- - app/assets/images/effective_datatables/copy_csv_xls_pdf.swf
110
112
  - app/assets/javascripts/dataTables/buttons/buttons.bootstrap.js
111
113
  - app/assets/javascripts/dataTables/buttons/buttons.colVis.js
112
114
  - app/assets/javascripts/dataTables/buttons/buttons.html5.js
@@ -117,8 +119,8 @@ files:
117
119
  - app/assets/javascripts/dataTables/jquery.dataTables.min.js
118
120
  - app/assets/javascripts/dataTables/responsive/dataTables.responsive.min.js
119
121
  - app/assets/javascripts/dataTables/responsive/responsive.bootstrap.min.js
120
- - app/assets/javascripts/effective_datatables/initialize.js.coffee.erb
121
122
  - app/assets/javascripts/effective_datatables.js
123
+ - app/assets/javascripts/effective_datatables/initialize.js.coffee.erb
122
124
  - app/assets/javascripts/vendor/jquery.debounce.min.js
123
125
  - app/assets/javascripts/vendor/jszip.min.js
124
126
  - app/assets/stylesheets/dataTables/buttons/buttons.bootstrap.min.css
@@ -129,8 +131,8 @@ files:
129
131
  - app/assets/stylesheets/dataTables/jquery.dataTables.min.css
130
132
  - app/assets/stylesheets/dataTables/responsive/responsive.bootstrap.min.css
131
133
  - app/assets/stylesheets/dataTables/responsive/responsive.dataTables.min.css
132
- - app/assets/stylesheets/effective_datatables/_overrides.scss.erb
133
134
  - app/assets/stylesheets/effective_datatables.scss
135
+ - app/assets/stylesheets/effective_datatables/_overrides.scss.erb
134
136
  - app/controllers/effective/datatables_controller.rb
135
137
  - app/helpers/effective_datatables_helper.rb
136
138
  - app/models/effective/access_denied.rb
@@ -145,21 +147,21 @@ files:
145
147
  - app/views/effective/datatables/_datatable.html.haml
146
148
  - app/views/effective/datatables/_spacer_template.html
147
149
  - config/routes.rb
150
+ - lib/effective_datatables.rb
148
151
  - lib/effective_datatables/engine.rb
149
152
  - lib/effective_datatables/version.rb
150
- - lib/effective_datatables.rb
151
153
  - lib/generators/effective_datatables/install_generator.rb
152
- - lib/generators/templates/effective_datatables.rb
153
154
  - lib/generators/templates/README
155
+ - lib/generators/templates/effective_datatables.rb
154
156
  - lib/tasks/effective_datatables_tasks.rake
155
- - MIT-LICENSE
156
- - Rakefile
157
- - README.md
157
+ - spec/dummy/README.rdoc
158
+ - spec/dummy/Rakefile
158
159
  - spec/dummy/app/assets/javascripts/application.js
159
160
  - spec/dummy/app/assets/stylesheets/application.css
160
161
  - spec/dummy/app/controllers/application_controller.rb
161
162
  - spec/dummy/app/helpers/application_helper.rb
162
163
  - spec/dummy/app/views/layouts/application.html.erb
164
+ - spec/dummy/config.ru
163
165
  - spec/dummy/config/application.rb
164
166
  - spec/dummy/config/boot.rb
165
167
  - spec/dummy/config/database.yml
@@ -175,7 +177,6 @@ files:
175
177
  - spec/dummy/config/initializers/wrap_parameters.rb
176
178
  - spec/dummy/config/locales/en.yml
177
179
  - spec/dummy/config/routes.rb
178
- - spec/dummy/config.ru
179
180
  - spec/dummy/db/development.sqlite3
180
181
  - spec/dummy/db/schema.rb
181
182
  - spec/dummy/db/test.sqlite3
@@ -185,8 +186,6 @@ files:
185
186
  - spec/dummy/public/422.html
186
187
  - spec/dummy/public/500.html
187
188
  - spec/dummy/public/favicon.ico
188
- - spec/dummy/Rakefile
189
- - spec/dummy/README.rdoc
190
189
  - spec/dummy/script/rails
191
190
  - spec/effective_datatables_spec.rb
192
191
  - spec/spec_helper.rb
@@ -201,17 +200,17 @@ require_paths:
201
200
  - lib
202
201
  required_ruby_version: !ruby/object:Gem::Requirement
203
202
  requirements:
204
- - - '>='
203
+ - - ">="
205
204
  - !ruby/object:Gem::Version
206
205
  version: '0'
207
206
  required_rubygems_version: !ruby/object:Gem::Requirement
208
207
  requirements:
209
- - - '>='
208
+ - - ">="
210
209
  - !ruby/object:Gem::Version
211
210
  version: '0'
212
211
  requirements: []
213
212
  rubyforge_project:
214
- rubygems_version: 2.0.14
213
+ rubygems_version: 2.5.0
215
214
  signing_key:
216
215
  specification_version: 4
217
216
  summary: Uniquely powerful server-side searching, sorting and filtering of any ActiveRecord