effective_datatables 2.5.0 → 2.5.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 698076a0613349e6b87650757f70464530e59933
4
- data.tar.gz: 6ec43352f2160e31f382dcccfdc5091537f0fcdb
3
+ metadata.gz: 4cc8bee1f23053d54e283c7300a106c2357014c4
4
+ data.tar.gz: e433bbad08218dc5e13c2ffc58449dbec5a7cefa
5
5
  SHA512:
6
- metadata.gz: bf5374370d10c21eda392ea2db88460eeb676de33a7e6e3f0236940955aa6a7399e14c3bbc52c902d390df5f3154b567a443819752b0ec4b8c19610964bd3aee
7
- data.tar.gz: 0dfdf316d031c7d34c2e2fa0b338d1dde5560375fb14bc9e319129dcc77e2d7845ce3004c276e9f3527dd0f3c760ab05bf302cf362f56b295b7d3637aeed4169
6
+ metadata.gz: d360f64c24af9e92337d89c86b3670e3b6d2b7ec1bd1fb1bd66b6ef358da4cb23de97492edc487cdcd5628a6d02369e127b4b4b95e3d6c4a2a45f9623b740935
7
+ data.tar.gz: 692685e7a4543fbf591754fd615f1b2b4ccad5bbf55e39806c099b1c2e8ce27b4a3f1e5c1266ef688744b52128446abc1dad907b78954f1b7ee4a65f5bbc8035
data/README.md CHANGED
@@ -555,6 +555,12 @@ def collection
555
555
  end
556
556
  ```
557
557
 
558
+ As well, you need to change the controller where you define the datatable to be aware of the scope params.
559
+
560
+ ```ruby
561
+ @datatable = Effective::Datatables::Posts.new(params[:scopes])
562
+ ```
563
+
558
564
  So initially, the `:start_date` will have the value of `Time.zone.now-3.months` and when submitted by the form, the value will be set there.
559
565
 
560
566
  The form value will come back as a string, so you may need to `Time.zone.parse` that value.
@@ -5,8 +5,9 @@ module Effective
5
5
  # This will respond to both a GET and a POST
6
6
  def show
7
7
  attributes = (params[:attributes].presence || {}).merge(referer: request.referer)
8
+ scopes = (params[:scopes].presence || {})
8
9
 
9
- @datatable = find_datatable(params[:id]).try(:new, attributes)
10
+ @datatable = find_datatable(params[:id]).try(:new, attributes.merge(scopes))
10
11
  @datatable.view = view_context if !@datatable.nil?
11
12
 
12
13
  EffectiveDatatables.authorized?(self, :index, @datatable.try(:collection_class) || @datatable.try(:class))
@@ -5,7 +5,7 @@ module Effective
5
5
  # These two options control the render behaviour of a datatable
6
6
  attr_accessor :table_html_class, :simple
7
7
 
8
- delegate :render, :controller, :link_to, :mail_to, :number_to_currency, :to => :@view
8
+ delegate :render, :controller, :link_to, :mail_to, :number_to_currency, :number_to_percentage, :to => :@view
9
9
 
10
10
  include Effective::EffectiveDatatable::Dsl
11
11
  extend Effective::EffectiveDatatable::Dsl::ClassMethods
@@ -23,8 +23,8 @@ module Effective
23
23
  end
24
24
 
25
25
  initialize_datatable # This creates @table_columns based on the DSL datatable do .. end block
26
+ initialize_scopes # This normalizes scopes, and copies scope default values to attributes
26
27
  initialize_options # This normalizes all the options
27
- initialize_scopes # This normalizes scopes, and copies scopes to attributes
28
28
 
29
29
  unless active_record_collection? || array_collection?
30
30
  raise "Unsupported collection type. Should be ActiveRecord class, ActiveRecord relation, or an Array of Arrays [[1, 'something'], [2, 'something else']]"
@@ -119,22 +119,6 @@ module Effective
119
119
  @view = view_context
120
120
  @view.formats = [:html]
121
121
 
122
- # Set any scopes
123
- if @view.params[:scopes].kind_of?(Hash)
124
- @view.params[:scopes].each do |name, value|
125
- next unless scopes.key?(name)
126
-
127
- if scopes[name][:fallback] || scopes[name][:presence]
128
- value = value.presence || scopes[name][:default]
129
- end
130
-
131
- self.attributes[name] = value
132
-
133
- self.scopes[name][:filter][:input_html] ||= HashWithIndifferentAccess.new
134
- self.scopes[name][:filter][:input_html][:value] = value
135
- end
136
- end
137
-
138
122
  # 'Just work' with attributes
139
123
  @view.class.send(:attr_accessor, :attributes)
140
124
  @view.attributes = self.attributes
@@ -19,23 +19,28 @@ module Effective
19
19
  protected
20
20
 
21
21
  # The scope DSL is
22
- # scope :start_date, default_value, options {}
22
+ # scope :start_date, default_value, options: {}
23
+ #
24
+ # The value might already be assigned, but if not, we have to assign the default to attributes
23
25
 
24
26
  # A scope comes to us like {:start_date => {default: Time.zone.now, filter: {as: :select, collection: ... input_html :}}}
25
27
  # We want to make sure an input_html: { value: default } exists
26
28
  def initialize_scope_options(scopes)
27
29
  (scopes || []).each do |name, options|
30
+ value = attributes.key?(name) ? attributes[name] : options[:default]
31
+
28
32
  options[:filter] ||= HashWithIndifferentAccess.new()
29
33
  options[:filter][:input_html] ||= HashWithIndifferentAccess.new()
30
- options[:filter][:input_html][:value] = options[:default]
31
- end
34
+ options[:filter][:input_html][:value] = value
32
35
 
33
- # For each scope, copy it into the attributes, so we can get at the value
34
- (scopes || []).each do |name, options|
35
- self.attributes[name] ||= options[:default]
36
- end
36
+ if attributes.key?(name) == false
37
+ self.attributes[name] = options[:default]
38
+ end
37
39
 
38
- scopes
40
+ if (options[:fallback] || options[:presence]) && attributes[name].blank? && attributes[name] != false
41
+ self.attributes[name] = options[:default]
42
+ end
43
+ end
39
44
  end
40
45
 
41
46
  def initialize_column_options(cols)
@@ -1,3 +1,3 @@
1
1
  module EffectiveDatatables
2
- VERSION = '2.5.0'.freeze
2
+ VERSION = '2.5.1'.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.5.0
4
+ version: 2.5.1
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: 2016-06-16 00:00:00.000000000 Z
11
+ date: 2016-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails