datagrid 1.5.8 → 1.6.2

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.
Files changed (74) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +8 -0
  3. data/Readme.markdown +2 -1
  4. data/app/views/datagrid/_table.html.erb +1 -1
  5. data/datagrid.gemspec +29 -166
  6. data/lib/datagrid/columns.rb +11 -14
  7. data/lib/datagrid/columns/column.rb +0 -5
  8. data/lib/datagrid/core.rb +13 -1
  9. data/lib/datagrid/drivers/active_record.rb +2 -1
  10. data/lib/datagrid/drivers/mongoid.rb +5 -1
  11. data/lib/datagrid/filters.rb +4 -7
  12. data/lib/datagrid/filters/base_filter.rb +11 -16
  13. data/lib/datagrid/filters/dynamic_filter.rb +15 -5
  14. data/lib/datagrid/filters/select_options.rb +1 -4
  15. data/lib/datagrid/form_builder.rb +17 -43
  16. data/lib/datagrid/helper.rb +1 -1
  17. data/lib/datagrid/locale/en.yml +6 -6
  18. data/lib/datagrid/renderer.rb +1 -2
  19. data/lib/datagrid/utils.rb +2 -6
  20. data/lib/datagrid/version.rb +3 -0
  21. metadata +15 -201
  22. data/.document +0 -5
  23. data/.rspec +0 -1
  24. data/.travis.yml +0 -20
  25. data/Gemfile +0 -29
  26. data/Rakefile +0 -43
  27. data/VERSION +0 -1
  28. data/spec/datagrid/active_model_spec.rb +0 -33
  29. data/spec/datagrid/column_names_attribute_spec.rb +0 -86
  30. data/spec/datagrid/columns/column_spec.rb +0 -19
  31. data/spec/datagrid/columns_spec.rb +0 -592
  32. data/spec/datagrid/core_spec.rb +0 -196
  33. data/spec/datagrid/drivers/active_record_spec.rb +0 -79
  34. data/spec/datagrid/drivers/array_spec.rb +0 -106
  35. data/spec/datagrid/drivers/mongo_mapper_spec.rb +0 -101
  36. data/spec/datagrid/drivers/mongoid_spec.rb +0 -109
  37. data/spec/datagrid/drivers/sequel_spec.rb +0 -111
  38. data/spec/datagrid/filters/base_filter_spec.rb +0 -19
  39. data/spec/datagrid/filters/boolean_enum_filter_spec.rb +0 -5
  40. data/spec/datagrid/filters/composite_filters_spec.rb +0 -65
  41. data/spec/datagrid/filters/date_filter_spec.rb +0 -195
  42. data/spec/datagrid/filters/date_time_filter_spec.rb +0 -157
  43. data/spec/datagrid/filters/dynamic_filter_spec.rb +0 -175
  44. data/spec/datagrid/filters/enum_filter_spec.rb +0 -51
  45. data/spec/datagrid/filters/extended_boolean_filter_spec.rb +0 -46
  46. data/spec/datagrid/filters/float_filter_spec.rb +0 -15
  47. data/spec/datagrid/filters/integer_filter_spec.rb +0 -144
  48. data/spec/datagrid/filters/string_filter_spec.rb +0 -35
  49. data/spec/datagrid/filters_spec.rb +0 -332
  50. data/spec/datagrid/form_builder_spec.rb +0 -641
  51. data/spec/datagrid/helper_spec.rb +0 -640
  52. data/spec/datagrid/ordering_spec.rb +0 -150
  53. data/spec/datagrid/scaffold_spec.rb +0 -45
  54. data/spec/datagrid/stylesheet_spec.rb +0 -12
  55. data/spec/datagrid/utils_spec.rb +0 -19
  56. data/spec/datagrid_spec.rb +0 -83
  57. data/spec/spec_helper.rb +0 -114
  58. data/spec/support/active_record.rb +0 -37
  59. data/spec/support/configuration.rb +0 -28
  60. data/spec/support/i18n_helpers.rb +0 -6
  61. data/spec/support/matchers.rb +0 -101
  62. data/spec/support/mongo_mapper.rb +0 -32
  63. data/spec/support/mongoid.rb +0 -36
  64. data/spec/support/sequel.rb +0 -39
  65. data/spec/support/simple_report.rb +0 -64
  66. data/spec/support/test_partials/_actions.html.erb +0 -1
  67. data/spec/support/test_partials/client/datagrid/_form.html.erb +0 -13
  68. data/spec/support/test_partials/client/datagrid/_head.html.erb +0 -9
  69. data/spec/support/test_partials/client/datagrid/_order_for.html.erb +0 -11
  70. data/spec/support/test_partials/client/datagrid/_row.html.erb +0 -6
  71. data/spec/support/test_partials/client/datagrid/_table.html.erb +0 -19
  72. data/spec/support/test_partials/custom_checkboxes/_enum_checkboxes.html.erb +0 -1
  73. data/spec/support/test_partials/custom_form/_form.html.erb +0 -7
  74. 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
-
@@ -1,6 +0,0 @@
1
- def store_translations(locale, translations, &block)
2
- I18n.backend.store_translations locale, translations
3
- yield
4
- ensure
5
- I18n.reload!
6
- end
@@ -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
@@ -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
-
@@ -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,6 +0,0 @@
1
- <tr>
2
- <p>Namespaced row partial.</p>
3
- <% grid.html_columns(*options[:columns]).each do |column| %>
4
- <td class="<%= datagrid_column_classes(grid, column) %>"><%= datagrid_value(grid, column, asset) %></td>
5
- <% end %>
6
- </tr>
@@ -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,7 +0,0 @@
1
- <%= form_for grid, options do |f| -%>
2
- <p>form_partial_test</p>
3
- <% grid.filters.each do |filter| %>
4
- <%= f.datagrid_label filter %>
5
- <%= f.datagrid_filter filter, partials: options[:partials] %>
6
- <% end %>
7
- <% end -%>
@@ -1 +0,0 @@
1
- custom_range_partial