effective_datatables 4.8.5 → 4.8.6

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
  SHA256:
3
- metadata.gz: c6a77322f8b3da0b36839982abeb4acf9d95dace45fbef7f5d6c070dfcf4a7b5
4
- data.tar.gz: a577c815d43b2a7fac94a295608fb3c58b89498cdcf9a8786efcb1a914efcf1a
3
+ metadata.gz: 64345f34ef800279082231d6d9e9949c4b68be37c0aa4069e5f435d3d1b1832a
4
+ data.tar.gz: 67ee557d89223e17b4b083f80eeef98ef4df108227a4c185f4973345fd302c58
5
5
  SHA512:
6
- metadata.gz: 3b2c6a6ccd7736bf2acd6b6d3ea3fa413a39af920fc9d65243979ac5a354b2c861d15771f7c48b2f7e7ae9e12a7fb49b3852238f8705841a25969484871d9b7c
7
- data.tar.gz: 6462f1def33b70d288dcf9fdded153b2e067b95df08a60d163ae81c5195eecceaa7e389bb8b02be4d2e0b368749a37dcc8c21ed74e9eadf8e1a26d0867f76f9d
6
+ metadata.gz: 1a75374172bd3387fe55c22a21db2fe3f44314c9ab4137ccfe2d8223a179d15e8172b5c8b9898419417fbfe05867c76a77b8fe166bf11d067b3f707d9b44c0e2
7
+ data.tar.gz: 41de743a61cbddf14cfe85055210767bd7a732d23c5df6e0c618e5359560e5764977adc305f1d43789ed13e37c9ef7c93ddc248567a1761a497eb093fb9cbe6e
data/README.md CHANGED
@@ -1155,6 +1155,22 @@ def finalize(collection)
1155
1155
  end
1156
1156
  ```
1157
1157
 
1158
+ ## Render outside of view
1159
+
1160
+ You can render a datatable outside the view.
1161
+
1162
+ Anything you pass to the `rendered` method is treated as view/request params.
1163
+
1164
+ You can test filters and scopes by passing them here.
1165
+
1166
+ ```
1167
+ post = Post.create!
1168
+ datatable = PostsDatatable.new.rendered(end_date: Time.zone.now+2.days, current_user_id: 1)
1169
+
1170
+ assert_equal 1, datatable.collection.count
1171
+ assert_equal [post], datatable.collection
1172
+ ```
1173
+
1158
1174
  ## Authorization
1159
1175
 
1160
1176
  All authorization checks are handled via the config.authorization_method found in the `config/initializers/effective_datatables.rb` file.
@@ -53,10 +53,36 @@ module Effective
53
53
  self.view = view if view
54
54
  end
55
55
 
56
+ def rendered(params = {})
57
+ raise('expected a hash of params') unless params.kind_of?(Hash)
58
+
59
+ view = ApplicationController.renderer.controller.helpers
60
+
61
+ view.class_eval do
62
+ attr_accessor :rendered_params
63
+
64
+ def current_user
65
+ rendered_params[:current_user]
66
+ end
67
+ end
68
+
69
+ if params[:current_user_id]
70
+ params[:current_user] = User.find(params[:current_user_id])
71
+ end
72
+
73
+ view.rendered_params = params
74
+
75
+ self.view = view
76
+ self
77
+ end
78
+
56
79
  # Once the view is assigned, we initialize everything
57
80
  def view=(view)
58
81
  @view = (view.respond_to?(:view_context) ? view.view_context : view)
59
- raise 'expected view to respond to params' unless @view.respond_to?(:params)
82
+
83
+ unless @view.respond_to?(:params) || @view.respond_to?(:rendered_params)
84
+ raise 'expected view to respond to params'
85
+ end
60
86
 
61
87
  assert_attributes!
62
88
  load_attributes!
@@ -11,6 +11,7 @@ module Effective
11
11
  end
12
12
 
13
13
  def load_attributes!
14
+ return unless view.respond_to?(:controller_path)
14
15
  @attributes[:namespace] ||= view.controller_path.split('/')[0...-1].join('/')
15
16
  end
16
17
 
@@ -10,6 +10,7 @@ module Effective
10
10
 
11
11
  def load_cookie!
12
12
  return unless EffectiveDatatables.save_state
13
+ return unless view.respond_to?(:cookies)
13
14
 
14
15
  @dt_cookie = view.cookies.signed['_effective_dt']
15
16
 
@@ -33,6 +34,7 @@ module Effective
33
34
 
34
35
  def save_cookie!
35
36
  return unless EffectiveDatatables.save_state
37
+ return unless view.respond_to?(:cookies)
36
38
 
37
39
  @dt_cookie ||= []
38
40
  @dt_cookie << [cookie_key, cookie_payload]
@@ -6,18 +6,23 @@ module Effective
6
6
 
7
7
  def datatables_ajax_request?
8
8
  return @_datatables_ajax_request unless @_datatables_ajax_request.nil?
9
+ return unless view.respond_to?(:params)
9
10
 
10
11
  @_datatables_ajax_request = (view.present? && view.params.key?(:draw) && view.params.key?(:columns))
11
12
  end
12
13
 
13
14
  def datatables_inline_request?
14
15
  return @_datatables_inline_request unless @_datatables_inline_request.nil?
16
+ return unless view.respond_to?(:params)
15
17
 
16
18
  @_datatables_inline_request = (view.present? && view.params[:_datatable_id].to_s.split('-')[0...-1] == to_param.split('-')[0...-1])
17
19
  end
18
20
 
19
21
  def params
20
22
  return {} unless view.present?
23
+ return view.rendered_params if view.respond_to?(:rendered_params)
24
+ return {} unless view.respond_to?(:request)
25
+
21
26
  @params ||= {}.tap do |params|
22
27
  Rack::Utils.parse_query(URI(view.request.referer.presence || '/').query).each { |k, v| params[k.to_sym] = v }
23
28
  view.params.each { |k, v| params[k.to_sym] = v }
@@ -1,3 +1,3 @@
1
1
  module EffectiveDatatables
2
- VERSION = '4.8.5'.freeze
2
+ VERSION = '4.8.6'.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: 4.8.5
4
+ version: 4.8.6
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: 2020-07-18 00:00:00.000000000 Z
11
+ date: 2020-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails