datagrid 0.3.0 → 0.3.1

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.
@@ -130,5 +130,39 @@ Each column is sortable.
130
130
 
131
131
  [More about columns](https://github.com/bogdan/datagrid/wiki/Columns)
132
132
 
133
+ ### Front end
133
134
 
135
+ In order to create form for your report you can use all set of rails built-in tools.
136
+
137
+ More over Datagrid provides you two additional form helpers:
138
+
139
+ * datagrid\_label
140
+ * datagrid\_filter
141
+
142
+ The easiest way to create a report form:
143
+
144
+ (haml for readablity)
145
+
146
+ ``` haml
147
+ - form_for @report do |f|
148
+ - @report.filters.each do |filter|
149
+ %div
150
+ = f.datagrid_label filter
151
+ = f.datagrid_filter filter
152
+ = f.submit
153
+ ```
154
+
155
+ There is a simple helper set of helpers that allows you display report:
156
+
157
+ (require will_paginate)
158
+
159
+ ``` haml
160
+ - assets = @report.assets.paginate(:page => params[:page])
161
+
162
+ %div== Total #{assets.total}
163
+ = datagrid_table(@report, assets)
164
+ = will_paginate assets
165
+ ```
166
+
167
+ [More about frontend](https://github.com/bogdan/datagrid/wiki/Frontend)
134
168
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{datagrid}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.1"
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 = %q{2011-07-01}
12
+ s.date = %q{2011-07-07}
13
13
  s.description = %q{This allows you to easily build datagrid aka data tables with sortable columns and filters}
14
14
  s.email = %q{agresso@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -109,7 +109,7 @@ module Datagrid
109
109
  result = super
110
110
  if self.order
111
111
  column = column_by_name(self.order)
112
- result = result.order(self.descending ? column.desc_order : column.order)
112
+ result = apply_order(result, self.descending ? column.desc_order : column.order)
113
113
  end
114
114
  result
115
115
  end
@@ -139,6 +139,14 @@ module Datagrid
139
139
  self.class.column_by_name(name)
140
140
  end
141
141
 
142
+ private
143
+
144
+ def apply_order(assets, order)
145
+ # Rails 3.0.x don't able to override already applied order
146
+ # Using #reorder instead
147
+ assets.respond_to?(:reorder) ? assets.reorder(order) : assets.order(order)
148
+ end
149
+
142
150
  end # InstanceMethods
143
151
 
144
152
  end
@@ -1,32 +1,36 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Datagrid::Columns do
4
-
4
+
5
5
  let(:group) { Group.create!(:name => "Pop") }
6
- let!(:entry) { Entry.create!(
7
- :group => group, :name => "Star", :disabled => false, :confirmed => false, :category => "first"
8
- ) }
9
-
6
+
10
7
  subject do
11
8
  SimpleReport.new
12
9
  end
13
- it "should build rows of data" do
14
- subject.rows.should == [["Pop", "Star"]]
15
- end
16
- it "should generate header" do
17
- subject.header.should == ["Group", "Name"]
18
- end
19
10
 
20
- it "should generate data" do
21
- subject.data.should == [
22
- subject.header,
23
- subject.row_for(entry)
24
- ]
25
- end
11
+ describe "basic methods" do
12
+
13
+ let!(:entry) { Entry.create!(
14
+ :group => group, :name => "Star", :disabled => false, :confirmed => false, :category => "first"
15
+ ) }
16
+ it "should build rows of data" do
17
+ subject.rows.should == [["Pop", "Star"]]
18
+ end
19
+ it "should generate header" do
20
+ subject.header.should == ["Group", "Name"]
21
+ end
22
+
23
+ it "should generate data" do
24
+ subject.data.should == [
25
+ subject.header,
26
+ subject.row_for(entry)
27
+ ]
28
+ end
26
29
 
27
30
  it "should support csv export" do
28
31
  subject.to_csv.should == "Group,Name\nPop,Star\n"
29
32
  end
33
+ end
30
34
 
31
35
  it "should support columns with model and report arguments" do
32
36
  report = test_report(:category => "foo") do
@@ -45,21 +49,37 @@ describe Datagrid::Columns do
45
49
  report.rows.last.first.should be_false
46
50
  end
47
51
 
52
+ describe "ordering" do
48
53
 
49
- it "should raise error if ordered by not existing column" do
50
- lambda {
51
- test_report(:order => :hello)
52
- }.should raise_error(Datagrid::OrderUnsupported)
53
- end
54
54
 
55
- it "should raise error if ordered by column without order" do
56
- lambda {
57
- test_report(:order => :category) do
58
- filter(:category, :default, :order => false) do |value|
59
- self
55
+ it "should raise error if ordered by not existing column" do
56
+ lambda {
57
+ test_report(:order => :hello)
58
+ }.should raise_error(Datagrid::OrderUnsupported)
59
+ end
60
+
61
+ it "should raise error if ordered by column without order" do
62
+ lambda do
63
+ test_report(:order => :category) do
64
+ filter(:category, :default, :order => false) do |value|
65
+ self
66
+ end
60
67
  end
61
- end
62
- }.should raise_error(Datagrid::OrderUnsupported)
68
+ end.should raise_error(Datagrid::OrderUnsupported)
69
+ end
70
+
71
+ it "should override default order" do
72
+ Entry.all.should be_empty
73
+ e1 = Entry.create!
74
+ e2 = Entry.create!
75
+ test_report(:order => :id) do
76
+ scope { Entry.order("id desc")}
77
+ column(:id) do
78
+ self.order("id asc")
79
+ end
80
+ end.assets.all.should == [e1, e2]
81
+ end
82
+
63
83
  end
64
84
 
65
85
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: datagrid
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.0
5
+ version: 0.3.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Bogdan Gusiev
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-01 00:00:00 +03:00
13
+ date: 2011-07-07 00:00:00 +03:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -205,7 +205,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
205
  requirements:
206
206
  - - ">="
207
207
  - !ruby/object:Gem::Version
208
- hash: -315143401371934304
208
+ hash: 4430126750120291741
209
209
  segments:
210
210
  - 0
211
211
  version: "0"