datagrid 1.3.7 → 1.3.9
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 +4 -4
- data/VERSION +1 -1
- data/app/assets/stylesheets/{datagrid.css.sass → datagrid.sass} +0 -0
- data/app/views/datagrid/_form.html.erb +1 -1
- data/datagrid.gemspec +9 -6
- data/lib/datagrid/columns/column.rb +1 -2
- data/lib/datagrid/filters.rb +10 -0
- data/lib/datagrid/filters/base_filter.rb +5 -2
- data/lib/datagrid/filters/date_filter.rb +1 -1
- data/lib/datagrid/filters/date_time_filter.rb +1 -1
- data/lib/datagrid/filters/float_filter.rb +1 -1
- data/lib/datagrid/filters/integer_filter.rb +1 -1
- data/lib/datagrid/filters/ranged_filter.rb +1 -1
- data/lib/datagrid/form_builder.rb +25 -9
- data/lib/datagrid/rspec.rb +1 -1
- data/lib/datagrid/utils.rb +14 -0
- data/spec/datagrid/columns_spec.rb +61 -4
- data/spec/datagrid/drivers/active_record_spec.rb +2 -2
- data/spec/datagrid/drivers/mongo_mapper_spec.rb +1 -1
- data/spec/datagrid/drivers/mongoid_spec.rb +1 -1
- data/spec/datagrid/filters/date_time_filter_spec.rb +7 -2
- data/spec/datagrid/filters_spec.rb +48 -0
- data/spec/datagrid/form_builder_spec.rb +37 -13
- data/spec/datagrid/helper_spec.rb +23 -0
- data/spec/datagrid/stylesheet_spec.rb +8 -0
- data/spec/datagrid_spec.rb +4 -2
- data/spec/spec_helper.rb +2 -0
- data/spec/support/i18n_helpers.rb +7 -0
- data/spec/support/matchers.rb +5 -0
- data/spec/support/simple_report.rb +2 -1
- data/spec/support/test_partials/custom_checkboxes/_enum_checkboxes.html.erb +1 -0
- data/spec/support/test_partials/custom_form/_form.html.erb +7 -0
- data/spec/support/test_partials/custom_range/_range_filter.html.erb +1 -0
- metadata +8 -5
- data/spec/support/locale/deprecated_range_format.yml +0 -7
- data/spec/support/locale/deprecated_range_separator.yml +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d1827360a3a33795e420d9c086607e2934ff3a8
|
4
|
+
data.tar.gz: 34e08edcc7adcb354dfd7d6b24b19c8a34134c19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1d458c0938739371e2cf3dd5d16e5c9601dea0f9a6c62b439c542aa8a14d6a84e90c76e7447b03306a51eec91eddb05d97fe454c1020dd25748c89b093cc8fa
|
7
|
+
data.tar.gz: bd86f70ec51fcf427b33c1b3380b4c4eaf9d7c8e3070ce74606354dace36e973ca5befe383f3cc7c397ebe4e8418d8e568e2cea1621d9372195321295ed5b7f5
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.9
|
File without changes
|
data/datagrid.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: datagrid 1.3.
|
5
|
+
# stub: datagrid 1.3.9 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "datagrid"
|
9
|
-
s.version = "1.3.
|
9
|
+
s.version = "1.3.9"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Bogdan Gusiev"]
|
14
|
-
s.date = "2015-
|
14
|
+
s.date = "2015-05-11"
|
15
15
|
s.description = "This allows you to easily build datagrid aka data tables with sortable columns and filters"
|
16
16
|
s.email = "agresso@gmail.com"
|
17
17
|
s.extra_rdoc_files = [
|
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
"Rakefile",
|
28
28
|
"Readme.markdown",
|
29
29
|
"VERSION",
|
30
|
-
"app/assets/stylesheets/datagrid.
|
30
|
+
"app/assets/stylesheets/datagrid.sass",
|
31
31
|
"app/views/datagrid/_enum_checkboxes.html.erb",
|
32
32
|
"app/views/datagrid/_form.html.erb",
|
33
33
|
"app/views/datagrid/_head.html.erb",
|
@@ -98,13 +98,13 @@ Gem::Specification.new do |s|
|
|
98
98
|
"spec/datagrid/helper_spec.rb",
|
99
99
|
"spec/datagrid/ordering_spec.rb",
|
100
100
|
"spec/datagrid/scaffold_spec.rb",
|
101
|
+
"spec/datagrid/stylesheet_spec.rb",
|
101
102
|
"spec/datagrid/utils_spec.rb",
|
102
103
|
"spec/datagrid_spec.rb",
|
103
104
|
"spec/spec_helper.rb",
|
104
105
|
"spec/support/active_record.rb",
|
105
106
|
"spec/support/configuration.rb",
|
106
|
-
"spec/support/
|
107
|
-
"spec/support/locale/deprecated_range_separator.yml",
|
107
|
+
"spec/support/i18n_helpers.rb",
|
108
108
|
"spec/support/matchers.rb",
|
109
109
|
"spec/support/mongo_mapper.rb",
|
110
110
|
"spec/support/mongoid.rb",
|
@@ -115,6 +115,9 @@ Gem::Specification.new do |s|
|
|
115
115
|
"spec/support/test_partials/client/datagrid/_order_for.html.erb",
|
116
116
|
"spec/support/test_partials/client/datagrid/_row.html.erb",
|
117
117
|
"spec/support/test_partials/client/datagrid/_table.html.erb",
|
118
|
+
"spec/support/test_partials/custom_checkboxes/_enum_checkboxes.html.erb",
|
119
|
+
"spec/support/test_partials/custom_form/_form.html.erb",
|
120
|
+
"spec/support/test_partials/custom_range/_range_filter.html.erb",
|
118
121
|
"templates/controller.rb.erb",
|
119
122
|
"templates/grid.rb.erb",
|
120
123
|
"templates/index.html.erb"
|
@@ -56,8 +56,7 @@ class Datagrid::Columns::Column
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def header
|
59
|
-
self.options[:header] ||
|
60
|
-
I18n.translate(self.name, :scope => "datagrid.#{self.grid_class.param_name}.columns", :default => self.name.to_s.humanize )
|
59
|
+
self.options[:header] || Datagrid::Utils.translate_from_namespace(:columns, grid_class, name)
|
61
60
|
end
|
62
61
|
|
63
62
|
def order
|
data/lib/datagrid/filters.rb
CHANGED
@@ -151,6 +151,16 @@ module Datagrid
|
|
151
151
|
apply_filters(scope, filters.map{|f| filter_by_name(f)})
|
152
152
|
end
|
153
153
|
|
154
|
+
# Returns select options for specific filter or filter name
|
155
|
+
# If given filter doesn't support select options raises `ArgumentError`
|
156
|
+
def select_options(filter)
|
157
|
+
filter = filter_by_name(filter)
|
158
|
+
unless filter.class.included_modules.include?(::Datagrid::Filters::SelectOptions)
|
159
|
+
raise ::Datagrid::ArgumentError, "#{filter.name} with type #{FILTER_TYPES.invert[filter.class].inspect} can not have select options"
|
160
|
+
end
|
161
|
+
filter.select(self)
|
162
|
+
end
|
163
|
+
|
154
164
|
protected
|
155
165
|
|
156
166
|
def apply_filters(current_scope, filters)
|
@@ -49,8 +49,7 @@ class Datagrid::Filters::BaseFilter #:nodoc:
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def header
|
52
|
-
options[:header] ||
|
53
|
-
I18n.translate(self.name, :scope => "datagrid.#{grid_class.param_name}.filters", :default => self.name.to_s.humanize)
|
52
|
+
options[:header] || Datagrid::Utils.translate_from_namespace(:filters, grid_class, name)
|
54
53
|
end
|
55
54
|
|
56
55
|
def default
|
@@ -100,6 +99,10 @@ class Datagrid::Filters::BaseFilter #:nodoc:
|
|
100
99
|
end
|
101
100
|
end
|
102
101
|
|
102
|
+
def supports_range?
|
103
|
+
self.class.ancestors.include?(::Datagrid::Filters::RangedFilter)
|
104
|
+
end
|
105
|
+
|
103
106
|
def format(value)
|
104
107
|
value.nil? ? nil : value.to_s
|
105
108
|
end
|
@@ -7,6 +7,8 @@ module Datagrid
|
|
7
7
|
def datagrid_filter(filter_or_attribute, options = {}, &block)
|
8
8
|
filter = datagrid_get_filter(filter_or_attribute)
|
9
9
|
options = add_html_classes(options, filter.name, datagrid_filter_html_class(filter))
|
10
|
+
# Prevent partials option from appearing in HTML attributes
|
11
|
+
options.delete(:partials) unless supports_partial?(filter)
|
10
12
|
self.send(filter.form_builder_helper_name, filter, options, &block)
|
11
13
|
end
|
12
14
|
|
@@ -48,18 +50,17 @@ module Datagrid
|
|
48
50
|
end
|
49
51
|
|
50
52
|
def datagrid_enum_filter(attribute_or_filter, options = {}, &block)
|
51
|
-
options = options.clone
|
52
53
|
filter = datagrid_get_filter(attribute_or_filter)
|
53
54
|
if filter.checkboxes?
|
55
|
+
partial = partial_path(options, 'enum_checkboxes')
|
54
56
|
options = add_html_classes(options, 'checkboxes')
|
55
|
-
|
56
|
-
elements = filter.select(object).map do |element|
|
57
|
+
elements = object.select_options(filter).map do |element|
|
57
58
|
text, value = @template.send(:option_text_and_value, element)
|
58
59
|
checked = enum_checkbox_checked?(filter, value)
|
59
60
|
[value, text, checked]
|
60
61
|
end
|
61
62
|
@template.render(
|
62
|
-
:partial =>
|
63
|
+
:partial => partial,
|
63
64
|
:locals => {
|
64
65
|
:elements => elements,
|
65
66
|
:form => self,
|
@@ -73,7 +74,7 @@ module Datagrid
|
|
73
74
|
end
|
74
75
|
select(
|
75
76
|
filter.name,
|
76
|
-
|
77
|
+
object.select_options(filter) || [],
|
77
78
|
{:include_blank => filter.include_blank,
|
78
79
|
:prompt => filter.prompt,
|
79
80
|
:include_hidden => false},
|
@@ -95,7 +96,7 @@ module Datagrid
|
|
95
96
|
|
96
97
|
def datagrid_integer_filter(attribute_or_filter, options = {})
|
97
98
|
filter = datagrid_get_filter(attribute_or_filter)
|
98
|
-
if filter.multiple? &&
|
99
|
+
if filter.multiple? && object[filter.name].blank?
|
99
100
|
options[:value] = ""
|
100
101
|
end
|
101
102
|
datagrid_range_filter(:integer, filter, options)
|
@@ -108,7 +109,7 @@ module Datagrid
|
|
108
109
|
options = options.merge(:name => input_name)
|
109
110
|
field_input = select(
|
110
111
|
filter.name,
|
111
|
-
|
112
|
+
object.select_options(filter) || [],
|
112
113
|
{
|
113
114
|
:include_blank => filter.include_blank,
|
114
115
|
:prompt => filter.prompt,
|
@@ -129,6 +130,7 @@ module Datagrid
|
|
129
130
|
def datagrid_range_filter(type, attribute_or_filter, options = {})
|
130
131
|
filter = datagrid_get_filter(attribute_or_filter)
|
131
132
|
if filter.range?
|
133
|
+
partial = partial_path(options, 'range_filter')
|
132
134
|
options = options.merge(:multiple => true)
|
133
135
|
|
134
136
|
|
@@ -151,7 +153,7 @@ module Datagrid
|
|
151
153
|
I18n.t(format_key, :from_input => from_input, :to_input => to_input).html_safe
|
152
154
|
else
|
153
155
|
# More flexible way to render via partial
|
154
|
-
@template.render :partial =>
|
156
|
+
@template.render :partial => partial, :locals => {
|
155
157
|
:from_options => from_options, :to_options => to_options, :filter => filter, :form => self
|
156
158
|
}
|
157
159
|
end
|
@@ -214,8 +216,22 @@ module Datagrid
|
|
214
216
|
Datagrid::Utils.add_html_classes(options, *classes)
|
215
217
|
end
|
216
218
|
|
217
|
-
|
219
|
+
def partial_path(options, name)
|
220
|
+
if partials = options.delete(:partials)
|
221
|
+
partial_name = File.join(partials, name)
|
222
|
+
# Second argument is []: no magical namespaces to lookup added from controller
|
223
|
+
if @template.lookup_context.template_exists?(partial_name, [], true)
|
224
|
+
return partial_name
|
225
|
+
end
|
226
|
+
end
|
227
|
+
File.join('datagrid', name)
|
218
228
|
end
|
219
229
|
|
230
|
+
def supports_partial?(filter)
|
231
|
+
(filter.supports_range? && filter.range?) || (filter.type == :enum && filter.checkboxes?)
|
232
|
+
end
|
233
|
+
|
234
|
+
class Error < StandardError
|
235
|
+
end
|
220
236
|
end
|
221
237
|
end
|
data/lib/datagrid/rspec.rb
CHANGED
data/lib/datagrid/utils.rb
CHANGED
@@ -12,6 +12,20 @@ module Datagrid
|
|
12
12
|
TRUTH.include?(value)
|
13
13
|
end
|
14
14
|
|
15
|
+
def translate_from_namespace(namespace, grid_class, key)
|
16
|
+
deprecated_key = :"datagrid.#{grid_class.param_name}.#{namespace}.#{key}"
|
17
|
+
live_key = :"datagrid.#{grid_class.model_name.i18n_key}.#{namespace}.#{key}"
|
18
|
+
i18n_key = grid_class.model_name.i18n_key.to_s
|
19
|
+
|
20
|
+
if grid_class.param_name != i18n_key && I18n.exists?(deprecated_key)
|
21
|
+
Datagrid::Utils.warn_once(
|
22
|
+
"Deprecated translation namespace 'datagrid.#{grid_class.param_name}' for #{grid_class}. Use 'datagrid.#{i18n_key}' instead."
|
23
|
+
)
|
24
|
+
return I18n.t(deprecated_key)
|
25
|
+
end
|
26
|
+
I18n.t(live_key, default: key.to_s.humanize).presence
|
27
|
+
end
|
28
|
+
|
15
29
|
def warn_once(message, delay = 5)
|
16
30
|
@warnings ||= {}
|
17
31
|
timestamp = @warnings[message]
|
@@ -23,13 +23,70 @@ describe Datagrid::Columns do
|
|
23
23
|
let(:date) { Date.new(2013, 8, 1) }
|
24
24
|
|
25
25
|
it "should have data columns without html columns" do
|
26
|
-
|
26
|
+
grid = test_report do
|
27
|
+
scope {Entry}
|
28
|
+
column(:name)
|
29
|
+
column(:action, :html => true) do
|
30
|
+
'dummy'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
expect(grid.data_columns.map(&:name)).to eq([:name])
|
34
|
+
expect(grid.html_columns.map(&:name)).to eq([:name, :action])
|
27
35
|
end
|
28
36
|
it "should build rows of data" do
|
29
|
-
|
37
|
+
grid = test_report do
|
38
|
+
scope {Entry}
|
39
|
+
column(:name)
|
40
|
+
column(:action, :html => true) do
|
41
|
+
'dummy'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
expect(grid.rows).to eq([["Star"]])
|
45
|
+
end
|
46
|
+
it "should generate header without html columns" do
|
47
|
+
grid = test_report do
|
48
|
+
scope {Entry}
|
49
|
+
column(:name)
|
50
|
+
column(:action, :html => true) do
|
51
|
+
'dummy'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
expect(grid.header).to eq(["Name"])
|
30
55
|
end
|
31
|
-
|
32
|
-
|
56
|
+
|
57
|
+
describe "translations" do
|
58
|
+
|
59
|
+
module ::Ns45
|
60
|
+
class TranslatedReport
|
61
|
+
include Datagrid
|
62
|
+
scope { Entry }
|
63
|
+
column(:name)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
it "translates column with deprecated namespace" do
|
67
|
+
silence_warnings do
|
68
|
+
store_translations(:en, datagrid: {ns45_translated_report: {columns: {name: "Navn"}}}) do
|
69
|
+
expect(Ns45::TranslatedReport.new.header.first).to eq("Navn")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
it "translates column with namespace" do
|
75
|
+
store_translations(:en, datagrid: {:"ns45/translated_report" => {columns: {name: "Navn"}}}) do
|
76
|
+
expect(Ns45::TranslatedReport.new.header.first).to eq("Navn")
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
it "translates column without namespace" do
|
81
|
+
class Report27
|
82
|
+
include Datagrid
|
83
|
+
scope {Entry}
|
84
|
+
column(:name)
|
85
|
+
end
|
86
|
+
store_translations(:en, datagrid: {:"report27" => {columns: {name: "Nombre"}}}) do
|
87
|
+
expect(Report27.new.header.first).to eq("Nombre")
|
88
|
+
end
|
89
|
+
end
|
33
90
|
end
|
34
91
|
|
35
92
|
it "should return html_columns" do
|
@@ -6,7 +6,7 @@ describe Datagrid::Drivers::ActiveRecord do
|
|
6
6
|
subject { described_class }
|
7
7
|
|
8
8
|
it {should be_match(Entry)}
|
9
|
-
it {should be_match(Entry.
|
9
|
+
it {should be_match(Entry.where(:id => 1))}
|
10
10
|
it {should_not be_match(MongoidEntry)}
|
11
11
|
end
|
12
12
|
|
@@ -17,7 +17,7 @@ describe Datagrid::Drivers::ActiveRecord do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should support append_column_queries" do
|
20
|
-
scope = subject.append_column_queries(Entry.
|
20
|
+
scope = subject.append_column_queries(Entry.where({}), [Datagrid::Columns::Column.new(test_report_class, :sum_group_id, 'sum(entries.group_id)')])
|
21
21
|
expect(scope.to_sql.strip).to eq('SELECT "entries".*, sum(entries.group_id) AS sum_group_id FROM "entries"')
|
22
22
|
end
|
23
23
|
end
|
@@ -9,7 +9,7 @@ describe Datagrid::Drivers::MongoMapper, :mongomapper do
|
|
9
9
|
it {should be_match(MongoMapperEntry)}
|
10
10
|
# MongoMapper doesn't have a scoped method, instead it has a query method which returns a Plucky::Query object
|
11
11
|
it {should be_match(MongoMapperEntry.query)}
|
12
|
-
it {should_not be_match(Entry.
|
12
|
+
it {should_not be_match(Entry.where(:id => 1))}
|
13
13
|
|
14
14
|
end
|
15
15
|
describe "api" do
|
@@ -5,11 +5,16 @@ describe Datagrid::Filters::DateTimeFilter do
|
|
5
5
|
describe "with orm #{orm}", orm => true do
|
6
6
|
describe "timestamp to timestamp conversion" do
|
7
7
|
let(:klass) { klass }
|
8
|
-
|
8
|
+
|
9
|
+
let(:grid) do
|
9
10
|
test_report(:created_at => _created_at) do
|
10
11
|
scope { klass }
|
11
12
|
filter(:created_at, :datetime, :range => true)
|
12
|
-
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
subject do
|
17
|
+
grid.assets.to_a
|
13
18
|
end
|
14
19
|
|
15
20
|
def entry_dated(date)
|
@@ -204,4 +204,52 @@ describe Datagrid::Filters do
|
|
204
204
|
expect(object.type).to eq(:integer)
|
205
205
|
end
|
206
206
|
end
|
207
|
+
|
208
|
+
describe "tranlations" do
|
209
|
+
|
210
|
+
module ::Ns46
|
211
|
+
class TranslatedReport
|
212
|
+
include Datagrid
|
213
|
+
scope { Entry }
|
214
|
+
filter(:name)
|
215
|
+
end
|
216
|
+
end
|
217
|
+
it "translates filter with deprecated namespace" do
|
218
|
+
grid = Ns46::TranslatedReport.new
|
219
|
+
silence_warnings do
|
220
|
+
store_translations(:en, datagrid: {ns46_translated_report: {filters: {name: "Navn"}}}) do
|
221
|
+
expect(grid.filters.map(&:header)).to eq(["Navn"])
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
it "translates filter with namespace" do
|
227
|
+
grid = Ns46::TranslatedReport.new
|
228
|
+
store_translations(:en, datagrid: {:"ns46/translated_report" => {filters: {name: "Navn"}}}) do
|
229
|
+
expect(grid.filters.map(&:header)).to eq(["Navn"])
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
end
|
234
|
+
|
235
|
+
|
236
|
+
describe "#select_options" do
|
237
|
+
it "should return select options" do
|
238
|
+
grid = test_report do
|
239
|
+
scope {Entry}
|
240
|
+
filter(:id, :enum, select: [1,2,3])
|
241
|
+
end
|
242
|
+
expect(grid.select_options(:id)).to eq([1,2,3])
|
243
|
+
end
|
244
|
+
|
245
|
+
it "should raise ArgumentError for filter without options" do
|
246
|
+
grid = test_report do
|
247
|
+
scope {Entry}
|
248
|
+
filter(:id, :integer)
|
249
|
+
end
|
250
|
+
expect {
|
251
|
+
grid.select_options(:id)
|
252
|
+
}.to raise_error(Datagrid::ArgumentError)
|
253
|
+
end
|
254
|
+
end
|
207
255
|
end
|
@@ -58,6 +58,13 @@ describe Datagrid::FormBuilder do
|
|
58
58
|
it { should equal_to_dom(
|
59
59
|
'<input class="group_id integer_filter" id="report_group_id" name="report[group_id]" size="30" type="text"/>'
|
60
60
|
)}
|
61
|
+
|
62
|
+
context "when partials option is passed for filter that don't support range" do
|
63
|
+
let(:_filter_options) { {partials: 'anything' } }
|
64
|
+
it { should equal_to_dom(
|
65
|
+
'<input class="group_id integer_filter" id="report_group_id" name="report[group_id]" size="30" type="text"/>'
|
66
|
+
)}
|
67
|
+
end
|
61
68
|
end
|
62
69
|
|
63
70
|
context "with date filter type" do
|
@@ -130,16 +137,31 @@ describe Datagrid::FormBuilder do
|
|
130
137
|
)}
|
131
138
|
end
|
132
139
|
|
140
|
+
context "with custom partials option and template exists" do
|
141
|
+
let(:_filter_options) { { :partials => 'custom_range' } }
|
142
|
+
let(:_range) { nil }
|
143
|
+
it { should equal_to_dom(
|
144
|
+
"custom_range_partial"
|
145
|
+
) }
|
146
|
+
end
|
147
|
+
|
148
|
+
context "when custom partial doesn't exist" do
|
149
|
+
let(:_filter_options) { { :partials => 'not_existed' } }
|
150
|
+
let(:_range) { nil }
|
151
|
+
it { should equal_to_dom(
|
152
|
+
'<input class="group_id integer_filter from" multiple name="report[group_id][]" size="30" type="text"><span class="separator integer"> - </span><input class="group_id integer_filter to" multiple name="report[group_id][]" size="30" type="text">'
|
153
|
+
) }
|
154
|
+
|
155
|
+
end
|
156
|
+
|
133
157
|
context "when deprecated format translation specified" do
|
134
158
|
let(:_range) { nil }
|
135
159
|
around(:each) do |example|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
160
|
+
store_translations(:en, datagrid: {filters: {integer: {range_format: "from %{from_input} to %{to_input}"}}}) do
|
161
|
+
silence_warnings do
|
162
|
+
example.run
|
163
|
+
end
|
140
164
|
end
|
141
|
-
I18n.load_path.pop
|
142
|
-
I18n.reload!
|
143
165
|
end
|
144
166
|
it { should equal_to_dom(
|
145
167
|
'from <input class="group_id integer_filter from" multiple name="report[group_id][]" size="30" type="text"> to <input class="group_id integer_filter to" multiple name="report[group_id][]" size="30" type="text">'
|
@@ -148,14 +170,11 @@ describe Datagrid::FormBuilder do
|
|
148
170
|
context "when deprecated separator is specified" do
|
149
171
|
let(:_range) { nil }
|
150
172
|
around(:each) do |example|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
173
|
+
store_translations(:en, datagrid: {filters: {integer: {range_separator: " | "}}}) do
|
174
|
+
silence_warnings do
|
175
|
+
example.run
|
176
|
+
end
|
155
177
|
end
|
156
|
-
I18n.load_path.pop
|
157
|
-
I18n.reload!
|
158
|
-
|
159
178
|
end
|
160
179
|
it { should equal_to_dom(
|
161
180
|
'<input class="group_id integer_filter from" multiple name="report[group_id][]" size="30" type="text"> | <input class="group_id integer_filter to" multiple name="report[group_id][]" size="30" type="text">'
|
@@ -319,6 +338,11 @@ describe Datagrid::FormBuilder do
|
|
319
338
|
|
320
339
|
|
321
340
|
end
|
341
|
+
|
342
|
+
context "when partials option passed and partial exists" do
|
343
|
+
let(:_filter_options) { {partials: 'custom_checkboxes'} }
|
344
|
+
it { should equal_to_dom('custom_enum_checkboxes') }
|
345
|
+
end
|
322
346
|
end
|
323
347
|
end
|
324
348
|
|
@@ -455,6 +455,29 @@ describe Datagrid::Helper do
|
|
455
455
|
"form.datagrid-form input[name='g[id]']" => 1,
|
456
456
|
)
|
457
457
|
end
|
458
|
+
|
459
|
+
it "takes default partials if custom doesn't exist" do
|
460
|
+
class PartialDefaultGrid
|
461
|
+
include Datagrid
|
462
|
+
scope {Entry}
|
463
|
+
filter(:id, :integer, :range => true)
|
464
|
+
filter(:group_id, :enum, :multiple => true, :checkboxes => true, :select => [1,2])
|
465
|
+
def param_name
|
466
|
+
'g'
|
467
|
+
end
|
468
|
+
end
|
469
|
+
rendered_form = subject.datagrid_form_for(PartialDefaultGrid.new, {
|
470
|
+
:url => '',
|
471
|
+
:partials => 'custom_form'
|
472
|
+
})
|
473
|
+
expect(rendered_form).to include 'form_partial_test'
|
474
|
+
expect(rendered_form).to match_css_pattern([
|
475
|
+
'input.integer_filter.from',
|
476
|
+
'input.integer_filter.to',
|
477
|
+
".enum_filter input[value='1']",
|
478
|
+
".enum_filter input[value='2']",
|
479
|
+
])
|
480
|
+
end
|
458
481
|
end
|
459
482
|
|
460
483
|
|
data/spec/datagrid_spec.rb
CHANGED
@@ -2,9 +2,11 @@ require 'spec_helper'
|
|
2
2
|
require "datagrid/rspec"
|
3
3
|
|
4
4
|
|
5
|
-
describe
|
5
|
+
describe Datagrid do
|
6
6
|
|
7
|
-
|
7
|
+
describe SimpleReport do
|
8
|
+
it_should_behave_like 'Datagrid'
|
9
|
+
end
|
8
10
|
|
9
11
|
let(:group) { Group.create!(:name => "Pop") }
|
10
12
|
|
data/spec/spec_helper.rb
CHANGED
data/spec/support/matchers.rb
CHANGED
@@ -33,7 +33,7 @@ class SimpleReport
|
|
33
33
|
filter(:confirmed, :boolean)
|
34
34
|
|
35
35
|
filter(:name) do |value|
|
36
|
-
self.
|
36
|
+
self.where(:name => value)
|
37
37
|
end
|
38
38
|
|
39
39
|
column(:group, :order => "groups.name") do
|
@@ -61,3 +61,4 @@ class SimpleReport
|
|
61
61
|
end
|
62
62
|
|
63
63
|
end
|
64
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
custom_enum_checkboxes
|
@@ -0,0 +1 @@
|
|
1
|
+
custom_range_partial
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datagrid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bogdan Gusiev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -195,7 +195,7 @@ files:
|
|
195
195
|
- Rakefile
|
196
196
|
- Readme.markdown
|
197
197
|
- VERSION
|
198
|
-
- app/assets/stylesheets/datagrid.
|
198
|
+
- app/assets/stylesheets/datagrid.sass
|
199
199
|
- app/views/datagrid/_enum_checkboxes.html.erb
|
200
200
|
- app/views/datagrid/_form.html.erb
|
201
201
|
- app/views/datagrid/_head.html.erb
|
@@ -266,13 +266,13 @@ files:
|
|
266
266
|
- spec/datagrid/helper_spec.rb
|
267
267
|
- spec/datagrid/ordering_spec.rb
|
268
268
|
- spec/datagrid/scaffold_spec.rb
|
269
|
+
- spec/datagrid/stylesheet_spec.rb
|
269
270
|
- spec/datagrid/utils_spec.rb
|
270
271
|
- spec/datagrid_spec.rb
|
271
272
|
- spec/spec_helper.rb
|
272
273
|
- spec/support/active_record.rb
|
273
274
|
- spec/support/configuration.rb
|
274
|
-
- spec/support/
|
275
|
-
- spec/support/locale/deprecated_range_separator.yml
|
275
|
+
- spec/support/i18n_helpers.rb
|
276
276
|
- spec/support/matchers.rb
|
277
277
|
- spec/support/mongo_mapper.rb
|
278
278
|
- spec/support/mongoid.rb
|
@@ -283,6 +283,9 @@ files:
|
|
283
283
|
- spec/support/test_partials/client/datagrid/_order_for.html.erb
|
284
284
|
- spec/support/test_partials/client/datagrid/_row.html.erb
|
285
285
|
- spec/support/test_partials/client/datagrid/_table.html.erb
|
286
|
+
- spec/support/test_partials/custom_checkboxes/_enum_checkboxes.html.erb
|
287
|
+
- spec/support/test_partials/custom_form/_form.html.erb
|
288
|
+
- spec/support/test_partials/custom_range/_range_filter.html.erb
|
286
289
|
- templates/controller.rb.erb
|
287
290
|
- templates/grid.rb.erb
|
288
291
|
- templates/index.html.erb
|