datagrid 1.5.9 → 1.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/Readme.markdown +6 -4
- data/app/views/datagrid/_table.html.erb +1 -1
- data/datagrid.gemspec +29 -166
- data/lib/datagrid/column_names_attribute.rb +15 -16
- data/lib/datagrid/columns.rb +34 -37
- data/lib/datagrid/columns/column.rb +4 -0
- data/lib/datagrid/core.rb +13 -1
- data/lib/datagrid/drivers/active_record.rb +2 -1
- data/lib/datagrid/drivers/mongoid.rb +5 -1
- data/lib/datagrid/filters.rb +3 -6
- data/lib/datagrid/filters/base_filter.rb +8 -0
- data/lib/datagrid/filters/composite_filters.rb +4 -4
- data/lib/datagrid/form_builder.rb +18 -15
- data/lib/datagrid/helper.rb +3 -3
- data/lib/datagrid/renderer.rb +2 -5
- data/lib/datagrid/utils.rb +2 -6
- data/lib/datagrid/version.rb +3 -0
- metadata +15 -201
- data/.document +0 -5
- data/.rspec +0 -1
- data/.travis.yml +0 -21
- data/Gemfile +0 -29
- data/Rakefile +0 -43
- data/VERSION +0 -1
- data/spec/datagrid/active_model_spec.rb +0 -33
- data/spec/datagrid/column_names_attribute_spec.rb +0 -86
- data/spec/datagrid/columns/column_spec.rb +0 -19
- data/spec/datagrid/columns_spec.rb +0 -592
- data/spec/datagrid/core_spec.rb +0 -196
- data/spec/datagrid/drivers/active_record_spec.rb +0 -79
- data/spec/datagrid/drivers/array_spec.rb +0 -106
- data/spec/datagrid/drivers/mongo_mapper_spec.rb +0 -101
- data/spec/datagrid/drivers/mongoid_spec.rb +0 -109
- data/spec/datagrid/drivers/sequel_spec.rb +0 -111
- data/spec/datagrid/filters/base_filter_spec.rb +0 -19
- data/spec/datagrid/filters/boolean_enum_filter_spec.rb +0 -5
- data/spec/datagrid/filters/composite_filters_spec.rb +0 -65
- data/spec/datagrid/filters/date_filter_spec.rb +0 -195
- data/spec/datagrid/filters/date_time_filter_spec.rb +0 -157
- data/spec/datagrid/filters/dynamic_filter_spec.rb +0 -175
- data/spec/datagrid/filters/enum_filter_spec.rb +0 -51
- data/spec/datagrid/filters/extended_boolean_filter_spec.rb +0 -46
- data/spec/datagrid/filters/float_filter_spec.rb +0 -15
- data/spec/datagrid/filters/integer_filter_spec.rb +0 -144
- data/spec/datagrid/filters/string_filter_spec.rb +0 -35
- data/spec/datagrid/filters_spec.rb +0 -332
- data/spec/datagrid/form_builder_spec.rb +0 -614
- data/spec/datagrid/helper_spec.rb +0 -640
- data/spec/datagrid/ordering_spec.rb +0 -150
- data/spec/datagrid/scaffold_spec.rb +0 -45
- data/spec/datagrid/stylesheet_spec.rb +0 -12
- data/spec/datagrid/utils_spec.rb +0 -19
- data/spec/datagrid_spec.rb +0 -83
- data/spec/spec_helper.rb +0 -114
- data/spec/support/active_record.rb +0 -38
- data/spec/support/configuration.rb +0 -28
- data/spec/support/i18n_helpers.rb +0 -6
- data/spec/support/matchers.rb +0 -101
- data/spec/support/mongo_mapper.rb +0 -32
- data/spec/support/mongoid.rb +0 -36
- data/spec/support/sequel.rb +0 -39
- data/spec/support/simple_report.rb +0 -64
- data/spec/support/test_partials/_actions.html.erb +0 -1
- data/spec/support/test_partials/client/datagrid/_form.html.erb +0 -13
- data/spec/support/test_partials/client/datagrid/_head.html.erb +0 -9
- data/spec/support/test_partials/client/datagrid/_order_for.html.erb +0 -11
- data/spec/support/test_partials/client/datagrid/_row.html.erb +0 -6
- data/spec/support/test_partials/client/datagrid/_table.html.erb +0 -19
- data/spec/support/test_partials/custom_checkboxes/_enum_checkboxes.html.erb +0 -1
- data/spec/support/test_partials/custom_form/_form.html.erb +0 -7
- data/spec/support/test_partials/custom_range/_range_filter.html.erb +0 -1
@@ -1,28 +0,0 @@
|
|
1
|
-
def with_date_format(format = "%m/%d/%Y")
|
2
|
-
begin
|
3
|
-
old_format = Datagrid.configuration.date_formats
|
4
|
-
Datagrid.configure do |config|
|
5
|
-
config.date_formats = format
|
6
|
-
end
|
7
|
-
yield
|
8
|
-
ensure
|
9
|
-
Datagrid.configure do |config|
|
10
|
-
config.date_formats = old_format
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def with_datetime_format(format = "%m/%d/%Y")
|
16
|
-
begin
|
17
|
-
old_format = Datagrid.configuration.datetime_formats
|
18
|
-
Datagrid.configure do |config|
|
19
|
-
config.datetime_formats = format
|
20
|
-
end
|
21
|
-
yield
|
22
|
-
ensure
|
23
|
-
Datagrid.configure do |config|
|
24
|
-
config.datetime_formats = old_format
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
data/spec/support/matchers.rb
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
require "nokogiri"
|
2
|
-
|
3
|
-
def equal_to_dom(text)
|
4
|
-
EqualToDom.new(text)
|
5
|
-
end
|
6
|
-
|
7
|
-
def match_css_pattern(pattern)
|
8
|
-
CssPattern.new(pattern)
|
9
|
-
end
|
10
|
-
|
11
|
-
class EqualToDom
|
12
|
-
|
13
|
-
def initialize(expectation)
|
14
|
-
@expectation = normalize(expectation)
|
15
|
-
end
|
16
|
-
|
17
|
-
def matches?(text)
|
18
|
-
@matcher = normalize(text)
|
19
|
-
@matcher == @expectation
|
20
|
-
end
|
21
|
-
|
22
|
-
def normalize(text)
|
23
|
-
Nokogiri::HTML::DocumentFragment.parse(force_encoding(text.split("\n").map(&:strip).join(""))).to_s
|
24
|
-
end
|
25
|
-
|
26
|
-
def failure_message
|
27
|
-
"Expected dom \n#{@matcher}\n to match \n#{@expectation}\n, but it wasn't"
|
28
|
-
end
|
29
|
-
|
30
|
-
def description
|
31
|
-
"equal to dom #{@expectation[0..20]}"
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
def force_encoding(text)
|
37
|
-
"1.9.3".respond_to?(:force_encoding) ? text.clone.force_encoding("UTF-8") : text
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
class CssPattern
|
43
|
-
def initialize(pattern)
|
44
|
-
@css_pattern = pattern
|
45
|
-
unless @css_pattern.is_a?(Hash)
|
46
|
-
@css_pattern = Array(@css_pattern).map do |key|
|
47
|
-
[key, 1]
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def error!(message)
|
53
|
-
@error_message = message
|
54
|
-
false
|
55
|
-
end
|
56
|
-
|
57
|
-
def failure_message
|
58
|
-
@error_message || ""
|
59
|
-
end
|
60
|
-
|
61
|
-
def matches?(text)
|
62
|
-
text = text.clone.force_encoding("UTF-8") if "1.9.3".respond_to? :force_encoding
|
63
|
-
|
64
|
-
@matcher = Nokogiri::HTML::DocumentFragment.parse(text)
|
65
|
-
@css_pattern.each do |css, amount_or_pattern_or_string_or_proc|
|
66
|
-
path = @matcher.css(css)
|
67
|
-
if amount_or_pattern_or_string_or_proc.is_a?(String) or amount_or_pattern_or_string_or_proc.is_a?(Regexp)
|
68
|
-
pattern_or_string = amount_or_pattern_or_string_or_proc
|
69
|
-
html = path.inner_html
|
70
|
-
if !html.match(pattern_or_string)
|
71
|
-
return error!("#{css.inspect} did not match #{pattern_or_string.inspect}. It was \n:#{html.inspect}")
|
72
|
-
end
|
73
|
-
elsif amount_or_pattern_or_string_or_proc.is_a? Numeric
|
74
|
-
expected_amount = amount_or_pattern_or_string_or_proc
|
75
|
-
amount = path.size
|
76
|
-
if amount != expected_amount
|
77
|
-
return error!("did not find #{css.inspect} #{expected_amount.inspect} times. It was #{amount.inspect}")
|
78
|
-
end
|
79
|
-
elsif amount_or_pattern_or_string_or_proc.is_a? Proc
|
80
|
-
if !amount_or_pattern_or_string_or_proc.call(path)
|
81
|
-
return error!("#{css.inspect} did not validate (proc must not return a falsy value)")
|
82
|
-
end
|
83
|
-
else
|
84
|
-
raise "Instance of String, Rexexp, Proc or Fixnum required"
|
85
|
-
end
|
86
|
-
true
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def failure_message
|
91
|
-
"Expected to match dom pattern. But it wasn't."
|
92
|
-
end
|
93
|
-
|
94
|
-
def failure_message_when_negated
|
95
|
-
"Expected to not match dom pattern. But it was."
|
96
|
-
end
|
97
|
-
|
98
|
-
def description
|
99
|
-
"match dom pattern"
|
100
|
-
end
|
101
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
if defined?(MongoMapper)
|
2
|
-
|
3
|
-
class MongoMapperEntry
|
4
|
-
include MongoMapper::Document
|
5
|
-
|
6
|
-
key :group_id, Integer
|
7
|
-
key :name, String
|
8
|
-
key :category, String
|
9
|
-
key :disabled, Boolean, :default => false
|
10
|
-
key :confirmed, Boolean, :default => false
|
11
|
-
key :shipping_date, Time
|
12
|
-
timestamps!
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
class MongoMapperGrid
|
17
|
-
include ::Datagrid
|
18
|
-
|
19
|
-
scope do
|
20
|
-
MongoMapperEntry
|
21
|
-
end
|
22
|
-
|
23
|
-
filter :name
|
24
|
-
integer_range_filters(:group_id, {:default => 0}, {:default => 100})
|
25
|
-
filter :disabled, :xboolean
|
26
|
-
|
27
|
-
column :name
|
28
|
-
column :group_id
|
29
|
-
column :disabled
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
data/spec/support/mongoid.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require "rubygems"
|
2
|
-
|
3
|
-
#Mongoid.logger = TEST_LOGGER #TODO: understand why still output to STDOUT
|
4
|
-
|
5
|
-
|
6
|
-
class MongoidEntry
|
7
|
-
|
8
|
-
include Mongoid::Document
|
9
|
-
include Mongoid::Timestamps
|
10
|
-
|
11
|
-
field :group_id, :type => Integer
|
12
|
-
field :name, :type => String
|
13
|
-
field :category, :type => String
|
14
|
-
field :disabled, :default => false, :type => Boolean
|
15
|
-
field :confirmed, :default => false, :type => Boolean
|
16
|
-
field :shipping_date, :type => Time
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
class MongoidGrid
|
21
|
-
include ::Datagrid
|
22
|
-
|
23
|
-
scope do
|
24
|
-
MongoidEntry
|
25
|
-
end
|
26
|
-
|
27
|
-
filter :name
|
28
|
-
integer_range_filters(:group_id, {:default => 0}, {:default => 100})
|
29
|
-
filter :disabled, :xboolean
|
30
|
-
|
31
|
-
column :name
|
32
|
-
column :group_id
|
33
|
-
column :disabled
|
34
|
-
|
35
|
-
end
|
36
|
-
|
data/spec/support/sequel.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
require "sequel"
|
2
|
-
|
3
|
-
|
4
|
-
DB = Sequel.sqlite # memory database
|
5
|
-
|
6
|
-
DB.create_table :sequel_entries do
|
7
|
-
primary_key :id
|
8
|
-
|
9
|
-
Integer :group_id
|
10
|
-
String :name
|
11
|
-
String :category
|
12
|
-
Boolean :disabled
|
13
|
-
Boolean :confirmed
|
14
|
-
Time :shipping_date
|
15
|
-
Time :created_at
|
16
|
-
end
|
17
|
-
|
18
|
-
class SequelEntry < Sequel::Model
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
|
23
|
-
class SequelGrid
|
24
|
-
include ::Datagrid
|
25
|
-
|
26
|
-
scope do
|
27
|
-
SequelEntry
|
28
|
-
end
|
29
|
-
|
30
|
-
filter :name
|
31
|
-
integer_range_filters(:group_id, {:default => 0}, {:default => 100})
|
32
|
-
filter :disabled, :xboolean
|
33
|
-
|
34
|
-
column :name
|
35
|
-
column :group_id
|
36
|
-
column :disabled
|
37
|
-
|
38
|
-
end
|
39
|
-
|
@@ -1,64 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
def test_report(attributes = {}, &block)
|
4
|
-
klass = test_report_class(&block)
|
5
|
-
klass.new(attributes)
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_report_class(&block)
|
9
|
-
Class.new.tap do |klass|
|
10
|
-
klass.class_eval do
|
11
|
-
include Datagrid
|
12
|
-
def self.name
|
13
|
-
"TestGrid"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
if block
|
17
|
-
klass.class_eval(&block)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
class SimpleReport
|
23
|
-
|
24
|
-
include Datagrid
|
25
|
-
|
26
|
-
scope do
|
27
|
-
::Entry.includes(:group).order("entries.created_at")
|
28
|
-
end
|
29
|
-
|
30
|
-
filter(:group_id, :integer, :multiple => true)
|
31
|
-
filter(:category, :enum, :select => ["first", "second"])
|
32
|
-
filter(:disabled, :xboolean)
|
33
|
-
filter(:confirmed, :boolean)
|
34
|
-
|
35
|
-
filter(:name) do |value|
|
36
|
-
self.where(:name => value)
|
37
|
-
end
|
38
|
-
|
39
|
-
column(:group, :order => "groups.name") do
|
40
|
-
self.group.name
|
41
|
-
end
|
42
|
-
|
43
|
-
column(:name) do |user|
|
44
|
-
user.name
|
45
|
-
end
|
46
|
-
|
47
|
-
column(:actions, :html => true) do |model|
|
48
|
-
render :partial => "actions", :locals => {:model => model}
|
49
|
-
end
|
50
|
-
|
51
|
-
column(:pet, :html => lambda {|data| content_tag :em, data}) do
|
52
|
-
self.pet.try(:upcase)
|
53
|
-
end
|
54
|
-
|
55
|
-
column(:shipping_date, :before => :group)
|
56
|
-
|
57
|
-
column(:access_level, :html => lambda {|data| content_tag :h1, data}, :after => :actions)
|
58
|
-
|
59
|
-
def param_name
|
60
|
-
:report
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= "No action for #{model.name}" -%>
|
@@ -1,13 +0,0 @@
|
|
1
|
-
<%= form_for grid, options do |f| -%>
|
2
|
-
<p>Namespaced form partial.</p>
|
3
|
-
<% grid.filters.each do |filter| %>
|
4
|
-
<div class="datagrid-filter filter">
|
5
|
-
<%= f.datagrid_label filter %>
|
6
|
-
<%= f.datagrid_filter filter %>
|
7
|
-
</div>
|
8
|
-
<% end %>
|
9
|
-
<div class="datagrid-actions">
|
10
|
-
<%= f.submit I18n.t("datagrid.form.search").html_safe, :class => "datagrid-submit" %>
|
11
|
-
<%= link_to I18n.t('datagrid.form.reset').html_safe, url_for(grid.to_param => {}), :class => "datagrid-reset" %>
|
12
|
-
</div>
|
13
|
-
<% end -%>
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<tr>
|
2
|
-
<p>Namespaced head partial.</p>
|
3
|
-
<% grid.html_columns(*options[:columns]).each do |column| %>
|
4
|
-
<th class="<%= datagrid_column_classes(grid, column) %>">
|
5
|
-
<%= column.header %>
|
6
|
-
<%= datagrid_order_for(grid, column, options) if column.order && options[:order]%>
|
7
|
-
</th>
|
8
|
-
<% end %>
|
9
|
-
</tr>
|
@@ -1,11 +0,0 @@
|
|
1
|
-
<div class="order">
|
2
|
-
<p>Namespaced order_for partial.</p>
|
3
|
-
<%= link_to(
|
4
|
-
I18n.t("datagrid.table.order.asc").html_safe,
|
5
|
-
url_for(grid.param_name => grid.as_query.merge(:order => column.name, :descending => false)),
|
6
|
-
:class => "asc") %>
|
7
|
-
<%= link_to(
|
8
|
-
I18n.t("datagrid.table.order.desc").html_safe,
|
9
|
-
url_for(grid.param_name => grid.as_query.merge(:order => column.name, :descending => true )),
|
10
|
-
:class => "desc") %>
|
11
|
-
</div>
|
@@ -1,19 +0,0 @@
|
|
1
|
-
<%#
|
2
|
-
Local variables:
|
3
|
-
* grid - instance of Datagrid
|
4
|
-
* assets - Array of database Entities
|
5
|
-
* options - passed options Hash
|
6
|
-
%>
|
7
|
-
<p>Namespaced table partial.</p>
|
8
|
-
<%= content_tag :table, options[:html] do %>
|
9
|
-
<thead>
|
10
|
-
<%= datagrid_header(grid, options) %>
|
11
|
-
</thead>
|
12
|
-
<tbody>
|
13
|
-
<% if assets.empty? %>
|
14
|
-
<tr><td class="noresults" colspan="100%"><%= I18n.t('datagrid.no_results').html_safe %></td></tr>
|
15
|
-
<% else %>
|
16
|
-
<%= datagrid_rows(grid, assets, options) %>
|
17
|
-
<% end %>
|
18
|
-
</tbody>
|
19
|
-
<% end %>
|
@@ -1 +0,0 @@
|
|
1
|
-
custom_enum_checkboxes
|
@@ -1 +0,0 @@
|
|
1
|
-
custom_range_partial
|