jtable-rails 0.1.2 → 0.1.3

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{jtable-rails}
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Taylor Yelverton"]
@@ -2,7 +2,8 @@ module JTable
2
2
  module ActionController
3
3
  def jtable_for_json(rel, jtable_params)
4
4
  jtable_params = HashWithIndifferentAccess.new(jtable_params)
5
- {:total_items => rel.count, :items => rel.jtable_paginate(jtable_params[:limit], jtable_params[:offset])}
5
+ items = rel.jtable_paginate(jtable_params[:limit], jtable_params[:offset])
6
+ {:total_items => rel.count, :items => items.collect(&:jtable_item)}
6
7
  end
7
8
  end
8
9
  end
@@ -7,7 +7,7 @@ module JTable
7
7
  self
8
8
  end
9
9
  fields.each do |field|
10
- metaclass.instance_eval do
10
+ metaclass.instance_eval do
11
11
  define_method "jtable_search_#{field}" do |term|
12
12
  unless [:date].include? arel_table[field.to_sym].column.type
13
13
  if [:integer, :boolean].include? arel_table[field.to_sym].column.type
@@ -17,11 +17,33 @@ module JTable
17
17
  end
18
18
  end
19
19
  end
20
-
20
+
21
21
  define_method "jtable_order_#{field}" do |direction|
22
22
  "#{field} #{direction}"
23
23
  end
24
24
  end
25
+ define_method "jtable_attribute_#{field}" do
26
+ if self.class.arel_table[field.to_sym].column.type == :date
27
+ self.send(field).strftime("%m/%d/%Y %I:%M%P")
28
+ else
29
+ self.send(field)
30
+ end
31
+ end
32
+ end
33
+
34
+ metaclass.instance_eval do
35
+ define_method "jtable_attributes" do
36
+ fields
37
+ end
38
+ end
39
+
40
+ define_method "jtable_item" do
41
+ item_hash = {}
42
+ item_hash[:id] = self.id
43
+ fields.each do |field|
44
+ item_hash[field.to_sym] = self.send("jtable_attribute_#{field}")
45
+ end
46
+ item_hash
25
47
  end
26
48
 
27
49
  scope :jtable_search, lambda { |jtable_params|
@@ -25,6 +25,7 @@ describe "PeopleController" do
25
25
 
26
26
  it "should return the appropriate json" do
27
27
  people = Person.jtable_query(@params)
28
- @people_controller.jtable_for_json(people, @params).to_json.should eql({:total_items => people.count, :items => people.jtable_paginate(@params[:limit], @params[:offset])}.to_json)
28
+ jtable_items = people.jtable_paginate(@params[:limit], @params[:offset]).collect(&:jtable_item)
29
+ @people_controller.jtable_for_json(people, @params).to_json.should eql({:total_items => people.count, :items => jtable_items}.to_json)
29
30
  end
30
31
  end
@@ -28,9 +28,16 @@ describe "Person" do
28
28
  [:first_name, :last_name, :age, :date_of_birth, :gender, :alive].each do |attribute|
29
29
  Person.respond_to?("jtable_search_#{attribute}").should be_true
30
30
  Person.respond_to?("jtable_order_#{attribute}").should be_true
31
+ Person.respond_to?("jtable_attributes").should be_true
32
+ Person.new.respond_to?("jtable_attribute_#{attribute}").should be_true
33
+ Person.new.respond_to?("jtable_item").should be_true
31
34
  end
32
35
  end
33
36
 
37
+ it "should know jtables attributes" do
38
+ Person.jtable_attributes.should eql([:first_name, :last_name, :age, :date_of_birth, :gender, :alive])
39
+ end
40
+
34
41
  it "should load initial set" do
35
42
  Person.jtable_query(@params).to_json.should eql(Person.all.to_json)
36
43
  end
@@ -70,4 +77,9 @@ describe "Person" do
70
77
  @params[:sort_direction] = "ASC"
71
78
  Person.jtable_query(@params).to_json.should eql(Person.order('age ASC').to_json)
72
79
  end
80
+
81
+ it "should format an item for jtable" do
82
+ person = Fabricate(:person, :first_name => "John", :last_name => "Smith", :age => 21, :date_of_birth => 21.years.ago, :gender => "Male", :alive => true)
83
+ person.jtable_item.should eql({:id => person.id, :first_name => "John", :last_name => "Smith", :age => 21, :date_of_birth => 21.years.ago.strftime("%m/%d/%Y %I:%M%P"), :gender => "Male", :alive => true})
84
+ end
73
85
  end
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/yelvert/projects/jtable/jtable-rails
3
3
  specs:
4
- jtable-rails (0.1.1)
4
+ jtable-rails (0.1.2)
5
5
  rails (= 3.0.5)
6
6
 
7
7
  GEM
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 2
9
- version: 0.1.2
8
+ - 3
9
+ version: 0.1.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Taylor Yelverton
@@ -190,7 +190,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
190
190
  requirements:
191
191
  - - ">="
192
192
  - !ruby/object:Gem::Version
193
- hash: -3208820710179703731
193
+ hash: 626560608574340471
194
194
  segments:
195
195
  - 0
196
196
  version: "0"