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 +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
|