datagrid 0.8.1 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|