acts_as_flexigrid 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +9 -0
- data/acts_as_flexigrid.gemspec +28 -0
- data/lib/acts_as_flexigrid.rb +35 -0
- data/lib/acts_as_flexigrid/version.rb +3 -0
- data/spec/fake_app.rb +22 -0
- data/spec/models/acts_as_flexigrid_spec.rb +53 -0
- data/spec/spec_helper.rb +12 -0
- metadata +137 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -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
|
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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|