datagrid 0.8.1 → 0.8.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.
- data/Readme.markdown +7 -42
- data/VERSION +1 -1
- data/app/views/datagrid/_form.html.erb +9 -0
- data/app/views/datagrid/_order_for.html.erb +2 -2
- data/datagrid.gemspec +5 -3
- data/lib/datagrid.rb +2 -0
- data/lib/datagrid/configuration.rb +13 -0
- data/lib/datagrid/filters/date_filter.rb +8 -1
- data/lib/datagrid/helper.rb +4 -0
- data/lib/datagrid/renderer.rb +11 -1
- data/lib/tasks/datagrid_tasks.rake +7 -12
- data/spec/datagrid/filters/date_filter_spec.rb +16 -0
- data/spec/datagrid/helper_spec.rb +19 -2
- data/templates/index.html.erb +1 -9
- metadata +6 -4
data/Readme.markdown
CHANGED
@@ -158,55 +158,20 @@ create app/views/skills/index.html.erb
|
|
158
158
|
route resources :skills
|
159
159
|
```
|
160
160
|
|
161
|
-
### Manually
|
162
161
|
|
163
|
-
|
162
|
+
### Customize Built-in partials
|
164
163
|
|
165
|
-
In order to
|
166
|
-
More over Datagrid provides you two additional form helpers:
|
164
|
+
In order to get a control on datagrid built-in partials run:
|
167
165
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
The easiest way to create a report form (haml for readablity):
|
173
|
-
|
174
|
-
``` haml
|
175
|
-
# Method `GET` is recommended for all report forms by default.
|
176
|
-
- form_for @report, :html => {:method => :get} do |f|
|
177
|
-
- @report.filters.each do |filter|
|
178
|
-
%div
|
179
|
-
= f.datagrid_label filter
|
180
|
-
= f.datagrid_filter filter
|
181
|
-
= f.submit
|
166
|
+
``` sh
|
167
|
+
rake datagrid:copy_partials
|
182
168
|
```
|
183
169
|
|
184
|
-
|
185
|
-
|
186
|
-
``` ruby
|
187
|
-
map.resources :simple_reports, :only => [:index]
|
188
|
-
|
189
|
-
class SimpleReportsController < ApplicationController
|
190
|
-
def index
|
191
|
-
@report = SimpleReport.new(params[:simple_report])
|
192
|
-
end
|
193
|
-
end
|
194
|
-
```
|
195
|
-
|
196
|
-
There is a simple helper set of helpers that allows you display report:
|
197
|
-
(require any pagination gem, will\_paginate is used as an example)
|
198
|
-
|
199
|
-
``` haml
|
200
|
-
- assets = @report.assets.paginate(:page => params[:page])
|
201
|
-
|
202
|
-
%div== Total #{assets.total_entries}
|
203
|
-
= datagrid_table(@report, assets)
|
204
|
-
= will_paginate assets
|
205
|
-
```
|
170
|
+
### Advanced frontend
|
206
171
|
|
207
|
-
|
172
|
+
All advanced frontend things are described in:
|
208
173
|
|
209
|
-
[
|
174
|
+
[Frontend section on wiki](https://github.com/bogdan/datagrid/wiki/Frontend)
|
210
175
|
|
211
176
|
## Self-Promotion
|
212
177
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
1
|
+
0.8.2
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<%= form_for grid, options do |f| -%>
|
2
|
+
<% grid.filters.each do |filter| %>
|
3
|
+
<div class="filter">
|
4
|
+
<%= f.datagrid_label filter %>
|
5
|
+
<%= f.datagrid_filter filter %>
|
6
|
+
</div>
|
7
|
+
<% end %>
|
8
|
+
<%= f.submit I18n.t("datgrid.form.submit", :default => "Search").html_safe %>
|
9
|
+
<% end -%>
|
@@ -2,9 +2,9 @@
|
|
2
2
|
<%= link_to(
|
3
3
|
I18n.t("datagrid.table.order.asc", :default => "↑".html_safe).html_safe,
|
4
4
|
url_for(grid.param_name => grid.attributes.merge(:order => column.name, :descending => false)),
|
5
|
-
:class => "
|
5
|
+
:class => "asc") %>
|
6
6
|
<%= link_to(
|
7
7
|
I18n.t("datagrid.table.order.desc", :default => "↓".html_safe).html_safe,
|
8
8
|
url_for(grid.param_name => grid.attributes.merge(:order => column.name, :descending => true )),
|
9
|
-
:class => "
|
9
|
+
:class => "desc") %>
|
10
10
|
</div>
|
data/datagrid.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "datagrid"
|
8
|
-
s.version = "0.8.
|
8
|
+
s.version = "0.8.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Bogdan Gusiev"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-05-15"
|
13
13
|
s.description = "This allows you to easily build datagrid aka data tables with sortable columns and filters"
|
14
14
|
s.email = "agresso@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
"Rakefile",
|
24
24
|
"Readme.markdown",
|
25
25
|
"VERSION",
|
26
|
+
"app/views/datagrid/_form.html.erb",
|
26
27
|
"app/views/datagrid/_head.html.erb",
|
27
28
|
"app/views/datagrid/_order_for.html.erb",
|
28
29
|
"app/views/datagrid/_row.html.erb",
|
@@ -32,6 +33,7 @@ Gem::Specification.new do |s|
|
|
32
33
|
"lib/datagrid/active_model.rb",
|
33
34
|
"lib/datagrid/columns.rb",
|
34
35
|
"lib/datagrid/columns/column.rb",
|
36
|
+
"lib/datagrid/configuration.rb",
|
35
37
|
"lib/datagrid/core.rb",
|
36
38
|
"lib/datagrid/drivers.rb",
|
37
39
|
"lib/datagrid/drivers/abstract_driver.rb",
|
@@ -94,7 +96,7 @@ Gem::Specification.new do |s|
|
|
94
96
|
s.homepage = "http://github.com/bogdan/datagrid"
|
95
97
|
s.licenses = ["MIT"]
|
96
98
|
s.require_paths = ["lib"]
|
97
|
-
s.rubygems_version = "1.8.
|
99
|
+
s.rubygems_version = "1.8.25"
|
98
100
|
s.summary = "Ruby gem to create datagrids"
|
99
101
|
|
100
102
|
if s.respond_to? :specification_version then
|
data/lib/datagrid.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "action_view"
|
2
|
+
require "datagrid/configuration"
|
2
3
|
|
3
4
|
module Datagrid
|
4
5
|
|
@@ -9,6 +10,7 @@ module Datagrid
|
|
9
10
|
autoload :Filters
|
10
11
|
autoload :Columns
|
11
12
|
autoload :Ordering
|
13
|
+
autoload :Configuration
|
12
14
|
|
13
15
|
autoload :Helper
|
14
16
|
ActionView::Base.send(:include, Datagrid::Helper)
|
@@ -14,9 +14,16 @@ class Datagrid::Filters::DateFilter < Datagrid::Filters::BaseFilter
|
|
14
14
|
def format(value)
|
15
15
|
return nil if value.blank?
|
16
16
|
return value if value.is_a?(Range)
|
17
|
+
if formats = Datagrid.configuration.date_formats
|
18
|
+
Array(formats).each do |format|
|
19
|
+
begin
|
20
|
+
return Date.strptime(value, format)
|
21
|
+
rescue ArgumentError
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
17
25
|
return value.to_date if value.respond_to?(:to_date)
|
18
26
|
return value unless value.is_a?(String)
|
19
|
-
#TODO: more smart date normalizer
|
20
27
|
Date.parse(value)
|
21
28
|
rescue ArgumentError
|
22
29
|
nil
|
data/lib/datagrid/helper.rb
CHANGED
data/lib/datagrid/renderer.rb
CHANGED
@@ -43,10 +43,17 @@ module Datagrid
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
+
def form_for(grid, options = {})
|
47
|
+
options[:method] ||= :get
|
48
|
+
options[:html] ||= {}
|
49
|
+
options[:html][:class] ||= "datagrid-form #{html_class(grid)}"
|
50
|
+
@template.render :partial => "datagrid/form", :locals => {:grid => grid, :options => options}
|
51
|
+
end
|
52
|
+
|
46
53
|
def table(grid, *args)
|
47
54
|
options = args.extract_options!
|
48
55
|
options[:html] ||= {}
|
49
|
-
options[:html][:class] ||= "datagrid #{grid
|
56
|
+
options[:html][:class] ||= "datagrid #{html_class(grid)}"
|
50
57
|
assets = args.any? ? args.shift : grid.assets
|
51
58
|
paginate = options[:paginate]
|
52
59
|
if paginate
|
@@ -75,6 +82,9 @@ module Datagrid
|
|
75
82
|
@template.render :partial => "datagrid/order_for", :locals => { :grid => grid, :column => column }
|
76
83
|
end
|
77
84
|
|
85
|
+
def html_class(grid)
|
86
|
+
grid.class.to_s.underscore.demodulize
|
87
|
+
end
|
78
88
|
|
79
89
|
def _safe(string)
|
80
90
|
string.respond_to?(:html_safe) ? string.html_safe : string
|
@@ -3,18 +3,13 @@ namespace :datagrid do
|
|
3
3
|
desc "Copy table partials into rails application"
|
4
4
|
task :copy_partials do
|
5
5
|
require "fileutils"
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
puts "* copy #{
|
11
|
-
FileUtils.mkdir_p
|
12
|
-
FileUtils.cp
|
6
|
+
views_path = "app/views/datagrid"
|
7
|
+
destination_dir = (Rails.root + views_path).to_s
|
8
|
+
pattern = File.expand_path(File.dirname(__FILE__) + "/../../#{views_path}") + "/*"
|
9
|
+
Dir[pattern].each do |template|
|
10
|
+
puts "* copy #{template} => #{destination_dir}"
|
11
|
+
FileUtils.mkdir_p destination_dir
|
12
|
+
FileUtils.cp template, destination_dir
|
13
13
|
end
|
14
|
-
copy_template "views/datagrid/_table.html.erb"
|
15
|
-
copy_template "views/datagrid/_head.html.erb"
|
16
|
-
copy_template "views/datagrid/_order_for.html.erb"
|
17
|
-
copy_template "views/datagrid/_row.html.erb"
|
18
14
|
end
|
19
|
-
|
20
15
|
end
|
@@ -93,4 +93,20 @@ describe Datagrid::Filters::DateFilter do
|
|
93
93
|
report.assets.should include(Entry.create!(:created_at => DateTime.now))
|
94
94
|
end
|
95
95
|
|
96
|
+
it "should have configurable date format" do
|
97
|
+
begin
|
98
|
+
Datagrid.configure do |config|
|
99
|
+
config.date_formats = "%m/%d/%Y"
|
100
|
+
end
|
101
|
+
report = test_report(:created_at => "10/01/2013") do
|
102
|
+
scope {Entry}
|
103
|
+
filter(:created_at, :date)
|
104
|
+
end
|
105
|
+
report.created_at.should == Date.new(2013,10,01)
|
106
|
+
ensure
|
107
|
+
Datagrid.configure do |config|
|
108
|
+
config.date_formats = nil
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
96
112
|
end
|
@@ -272,11 +272,28 @@ describe Datagrid::Helper do
|
|
272
272
|
grid = OrderedGrid.new(:descending => true, :order => :category)
|
273
273
|
subject.datagrid_order_for(grid, grid.column_by_name(:category)).should equal_to_dom(<<-HTML)
|
274
274
|
<div class="order">
|
275
|
-
<a href="ordered_grid%5Bdescending%5D=false&ordered_grid%5Border%5D=category" class="
|
276
|
-
<a href="ordered_grid%5Bdescending%5D=true&ordered_grid%5Border%5D=category" class="
|
275
|
+
<a href="ordered_grid%5Bdescending%5D=false&ordered_grid%5Border%5D=category" class="asc">↑</a>
|
276
|
+
<a href="ordered_grid%5Bdescending%5D=true&ordered_grid%5Border%5D=category" class="desc">↓</a>
|
277
277
|
</div>
|
278
278
|
HTML
|
279
279
|
end
|
280
280
|
end
|
281
|
+
describe ".datagrid_form_for" do
|
282
|
+
it "should render ordering layout" do
|
283
|
+
class FormForGrid
|
284
|
+
include Datagrid
|
285
|
+
scope { Entry }
|
286
|
+
filter(:category)
|
287
|
+
end
|
288
|
+
grid = FormForGrid.new(:category => "hello")
|
289
|
+
subject.datagrid_form_for(grid, :url => "/grid").should match_css_pattern(
|
290
|
+
"form.datagrid-form.form_for_grid[action='/grid']" => 1,
|
291
|
+
"form input[name=utf8]" => 1,
|
292
|
+
"form .filter label" => "Category",
|
293
|
+
"form .filter input.category.default_filter[name='form_for_grid[category]'][value=hello]" => 1,
|
294
|
+
"form input[name=commit][value=Search]" => 1
|
295
|
+
)
|
296
|
+
end
|
297
|
+
end
|
281
298
|
end
|
282
299
|
end
|
data/templates/index.html.erb
CHANGED
@@ -1,12 +1,4 @@
|
|
1
|
-
<%%=
|
2
|
-
<%% @grid.filters.each do |filter| %>
|
3
|
-
<div class="field">
|
4
|
-
<%%= f.datagrid_label filter %>
|
5
|
-
<%%= f.datagrid_filter filter %>
|
6
|
-
</div>
|
7
|
-
<%% end %>
|
8
|
-
<%%= f.submit %>
|
9
|
-
<%% end %>
|
1
|
+
<%%= datagrid_form_for @grid, :method => :get, :url => <%= grid_route_name %> %>
|
10
2
|
|
11
3
|
<%%= <%=pagination_helper_code%> %>
|
12
4
|
<%%= datagrid_table @grid, @assets %>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datagrid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -250,6 +250,7 @@ files:
|
|
250
250
|
- Rakefile
|
251
251
|
- Readme.markdown
|
252
252
|
- VERSION
|
253
|
+
- app/views/datagrid/_form.html.erb
|
253
254
|
- app/views/datagrid/_head.html.erb
|
254
255
|
- app/views/datagrid/_order_for.html.erb
|
255
256
|
- app/views/datagrid/_row.html.erb
|
@@ -259,6 +260,7 @@ files:
|
|
259
260
|
- lib/datagrid/active_model.rb
|
260
261
|
- lib/datagrid/columns.rb
|
261
262
|
- lib/datagrid/columns/column.rb
|
263
|
+
- lib/datagrid/configuration.rb
|
262
264
|
- lib/datagrid/core.rb
|
263
265
|
- lib/datagrid/drivers.rb
|
264
266
|
- lib/datagrid/drivers/abstract_driver.rb
|
@@ -332,7 +334,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
332
334
|
version: '0'
|
333
335
|
segments:
|
334
336
|
- 0
|
335
|
-
hash:
|
337
|
+
hash: 2130335005317540436
|
336
338
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
337
339
|
none: false
|
338
340
|
requirements:
|
@@ -341,7 +343,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
341
343
|
version: '0'
|
342
344
|
requirements: []
|
343
345
|
rubyforge_project:
|
344
|
-
rubygems_version: 1.8.
|
346
|
+
rubygems_version: 1.8.25
|
345
347
|
signing_key:
|
346
348
|
specification_version: 3
|
347
349
|
summary: Ruby gem to create datagrids
|