acts_as_flexigrid 0.0.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/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in acts_as_flexigrid.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require 'bundler/gem_tasks'
2
+
3
+ require 'rspec/core'
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec) do |spec|
6
+ spec.pattern = FileList['spec/**/*_spec.rb']
7
+ end
8
+
9
+ task :default => :spec
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "acts_as_flexigrid/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "acts_as_flexigrid"
7
+ s.version = ActsAsFlexigrid::VERSION
8
+ s.authors = ["Akihiro Matsumura"]
9
+ s.email = ["matsumura.aki@gmail.com"]
10
+ s.homepage = "https://github.com/mataki/acts_as_flexigrid"
11
+ s.summary = %q{ActiveRecord plugin to use easily Flexigrid that is jQuery plugin for grid table}
12
+ s.description = %q{acts_as_flexigrid is ActiveRecord plugin for Flexigrid}
13
+
14
+ s.rubyforge_project = "acts_as_flexigrid"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_dependency 'activesupport', ['>= 3.0.0']
22
+ s.add_dependency 'activerecord', ['>= 3.0.0']
23
+ s.add_dependency 'kaminari', [">= 0"]
24
+ s.add_development_dependency 'rake', [">= 0"]
25
+ s.add_development_dependency 'sqlite3', ['>= 0']
26
+ s.add_development_dependency 'bundler', ['>= 1.0.0']
27
+ s.add_development_dependency 'rspec', ['>= 0']
28
+ end
@@ -0,0 +1,35 @@
1
+ require "acts_as_flexigrid/version"
2
+ require "active_support/concern"
3
+
4
+ module ActsAsFlexigrid
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ scope :flexigrid_scope, lambda { |params|
9
+ page(params["page"]).per(params["rp"]).flexigrid_order(params["sortname"], params["sortorder"]).flexigrid_where(params["qtype"], params["query"])
10
+ }
11
+
12
+ scope :flexigrid_where, lambda { |type, query|
13
+ if type and type.strip.present? and query and query.strip.present?
14
+ where("#{quoted_table_name}.#{connection.quote_column_name(type.strip)} LIKE :val", {:val => "%#{query.strip}%"})
15
+ end
16
+ }
17
+
18
+ scope :flexigrid_order, lambda { |name, order|
19
+ if name.present? and order.present?
20
+ order("#{name} #{order}")
21
+ end
22
+ }
23
+ end
24
+
25
+ module ClassMethods
26
+ def flexigrid(params, options = {}, &block)
27
+ rows = flexigrid_scope(params).map do |site|
28
+ cell = site.attributes.merge(options)
29
+ cell.merge!(yield(site)) if block_given?
30
+ { :id => site.id, :cell => cell }
31
+ end
32
+ { :rows => rows, :total => self.count, :page => params["page"] }
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,3 @@
1
+ module ActsAsFlexigrid
2
+ VERSION = "0.0.2"
3
+ end
data/spec/fake_app.rb ADDED
@@ -0,0 +1,22 @@
1
+ require 'active_record'
2
+
3
+ # -- init kaminari without rails
4
+ require "kaminari/config"
5
+ require "kaminari/models/page_scope_methods"
6
+ require "kaminari/models/configuration_methods"
7
+ require "kaminari/models/active_record_extension"
8
+ ::ActiveRecord::Base.send :include, Kaminari::ActiveRecordExtension
9
+
10
+ # -- setup ActiveRecord
11
+ ActiveRecord::Base.configurations = {'test' => {:adapter => 'sqlite3', :database => ':memory:'}}
12
+ ActiveRecord::Base.establish_connection('test')
13
+
14
+ class User < ActiveRecord::Base
15
+ include ActsAsFlexigrid
16
+ end
17
+
18
+ class CreateAllTables < ActiveRecord::Migration
19
+ def self.up
20
+ create_table(:users) {|t| t.string :name; t.integer :age}
21
+ end
22
+ end
@@ -0,0 +1,53 @@
1
+ require File.expand_path('../spec_helper', File.dirname(__FILE__))
2
+
3
+ describe ActsAsFlexigrid do
4
+ before :all do
5
+ 1.upto(100) {|i| User.create! :name => "user#{'%03d' % i}", :age => (i / 10)}
6
+ end
7
+
8
+ describe ".flexigrid" do
9
+ before do
10
+ @opt = { "page" => 1, "rp" => 10}
11
+ end
12
+ subject { User.flexigrid(@opt) }
13
+ it "should have specified 3 keys" do
14
+ should have_key(:rows)
15
+ should have_key(:total)
16
+ should have_key(:page)
17
+ end
18
+
19
+ it "should 100 as total" do
20
+ subject[:total].should == 100
21
+ end
22
+
23
+ it "should 10 data of rows" do
24
+ subject[:rows].should have(10).items
25
+ end
26
+
27
+ describe "Extend args" do
28
+ it "should include second args" do
29
+ action_str = "<a href='/edit'>Edit</a>"
30
+ res = User.flexigrid(@opt, { :action => action_str})
31
+ res[:rows].first[:cell][:action].should == action_str
32
+ end
33
+
34
+ it "should include block args" do
35
+ ext_val = "EXT_VAL"
36
+ res = User.flexigrid(@opt) do |obj|
37
+ { :ext_key => ext_val, :site_name => obj.name }
38
+ end
39
+ res[:rows].first[:cell].should have_key(:site_name)
40
+ res[:rows].first[:cell][:ext_key].should == ext_val
41
+ end
42
+ end
43
+ end
44
+
45
+ describe ".flexgrid_where" do
46
+ it "should return 100" do
47
+ User.flexigrid_where("name", "001").count.should == 1
48
+ end
49
+ it "should return quated sql" do
50
+ User.flexi
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require "acts_as_flexigrid"
5
+
6
+ require File.join(File.dirname(__FILE__), 'fake_app')
7
+
8
+ RSpec.configure do |config|
9
+ config.before :all do
10
+ CreateAllTables.up unless ActiveRecord::Base.connection.table_exists? 'users'
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts_as_flexigrid
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Akihiro Matsumura
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-09-03 00:00:00.000000000 +09:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ requirement: &2157924280 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 3.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *2157924280
26
+ - !ruby/object:Gem::Dependency
27
+ name: activerecord
28
+ requirement: &2157923660 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *2157923660
37
+ - !ruby/object:Gem::Dependency
38
+ name: kaminari
39
+ requirement: &2157923180 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *2157923180
48
+ - !ruby/object:Gem::Dependency
49
+ name: rake
50
+ requirement: &2157922620 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *2157922620
59
+ - !ruby/object:Gem::Dependency
60
+ name: sqlite3
61
+ requirement: &2157922080 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *2157922080
70
+ - !ruby/object:Gem::Dependency
71
+ name: bundler
72
+ requirement: &2157921480 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 1.0.0
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *2157921480
81
+ - !ruby/object:Gem::Dependency
82
+ name: rspec
83
+ requirement: &2157920940 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: *2157920940
92
+ description: acts_as_flexigrid is ActiveRecord plugin for Flexigrid
93
+ email:
94
+ - matsumura.aki@gmail.com
95
+ executables: []
96
+ extensions: []
97
+ extra_rdoc_files: []
98
+ files:
99
+ - .gitignore
100
+ - Gemfile
101
+ - Rakefile
102
+ - acts_as_flexigrid.gemspec
103
+ - lib/acts_as_flexigrid.rb
104
+ - lib/acts_as_flexigrid/version.rb
105
+ - spec/fake_app.rb
106
+ - spec/models/acts_as_flexigrid_spec.rb
107
+ - spec/spec_helper.rb
108
+ has_rdoc: true
109
+ homepage: https://github.com/mataki/acts_as_flexigrid
110
+ licenses: []
111
+ post_install_message:
112
+ rdoc_options: []
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubyforge_project: acts_as_flexigrid
129
+ rubygems_version: 1.6.2
130
+ signing_key:
131
+ specification_version: 3
132
+ summary: ActiveRecord plugin to use easily Flexigrid that is jQuery plugin for grid
133
+ table
134
+ test_files:
135
+ - spec/fake_app.rb
136
+ - spec/models/acts_as_flexigrid_spec.rb
137
+ - spec/spec_helper.rb