will_filter 3.0.3 → 3.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/will_filter/filter_controller.rb +6 -0
- data/app/models/will_filter/filter.rb +36 -4
- data/app/views/will_filter/filter/_conditions.html.erb +4 -1
- data/lib/core_ext/active_record/base.rb +1 -1
- data/lib/generators/will_filter/templates/config.yml +28 -0
- data/lib/will_filter/config.rb +4 -0
- metadata +39 -119
- data/.loadpath +0 -12
- data/.project +0 -18
- data/CHANGELOG.rdoc +0 -1
- data/Gemfile +0 -6
- data/Gemfile.lock +0 -73
- data/LICENSE +0 -18
- data/README.rdoc +0 -74
- data/Rakefile +0 -54
- data/VERSION +0 -1
- data/config.ru +0 -4
- data/db/development.sqlite3 +0 -0
- data/db/migrate/20090730070119_create_will_filter_tables.rb +0 -19
- data/db/seeds.rb +0 -7
- data/db/test.sqlite3 +0 -0
- data/doc/README_FOR_APP +0 -2
- data/examples/README +0 -1
- data/lib/tasks/.gitkeep +0 -0
- data/pkg/will_filter-0.1.0.gem +0 -0
- data/pkg/will_filter-0.1.1.gem +0 -0
- data/script/rails +0 -6
- data/test/functional/models/will_filter/filter_test.rb +0 -297
- data/test/performance/browsing_test.rb +0 -9
- data/test/test_helper.rb +0 -71
- data/uninstall.rb +0 -24
- data/will_filter.gemspec +0 -7
@@ -64,6 +64,8 @@ module WillFilter
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def save_filter
|
67
|
+
raise WillFilter::FilterException.new("Saving functions are disabled") unless WillFilter::Config.saving_enabled?
|
68
|
+
|
67
69
|
params.delete(:wf_id)
|
68
70
|
|
69
71
|
wf_filter = WillFilter::Filter.deserialize_from_params(params)
|
@@ -79,6 +81,8 @@ module WillFilter
|
|
79
81
|
end
|
80
82
|
|
81
83
|
def update_filter
|
84
|
+
raise WillFilter::FilterException.new("Saving functions are disabled") unless WillFilter::Config.saving_enabled?
|
85
|
+
|
82
86
|
wf_filter = WillFilter::Filter.find_by_id(params.delete(:wf_id))
|
83
87
|
wf_filter.deserialize_from_params(params)
|
84
88
|
wf_filter.validate!
|
@@ -93,6 +97,8 @@ module WillFilter
|
|
93
97
|
end
|
94
98
|
|
95
99
|
def delete_filter
|
100
|
+
raise WillFilter::FilterException.new("Saving functions are disabled") unless WillFilter::Config.saving_enabled?
|
101
|
+
|
96
102
|
wf_filter = WillFilter::Filter.find_by_id(params[:wf_id])
|
97
103
|
wf_filter.destroy if wf_filter
|
98
104
|
|
@@ -31,8 +31,13 @@ module WillFilter
|
|
31
31
|
#############################################################################
|
32
32
|
# Basics
|
33
33
|
#############################################################################
|
34
|
-
def initialize(model_class)
|
34
|
+
def initialize(model_class = nil)
|
35
35
|
super()
|
36
|
+
|
37
|
+
if WillFilter::Config.require_filter_extensions? and self.class.name == "WillFilter::Filter"
|
38
|
+
raise WillFilter::FilterException.new("Your configuration requires you to subclass the filter. Default filter cannot be created.")
|
39
|
+
end
|
40
|
+
|
36
41
|
self.model_class_name = model_class.to_s
|
37
42
|
end
|
38
43
|
|
@@ -89,8 +94,16 @@ module WillFilter
|
|
89
94
|
[]
|
90
95
|
end
|
91
96
|
|
97
|
+
# For extra security, this method must be overloaded by the extending class.
|
92
98
|
def model_class
|
93
|
-
|
99
|
+
if WillFilter::Config.require_filter_extensions?
|
100
|
+
raise WillFilter::FilterException.new("model_class method must be overloaded in the extending class.")
|
101
|
+
end
|
102
|
+
|
103
|
+
if model_class_name.blank?
|
104
|
+
raise WillFilter::FilterException.new("model_class_name was not specified.")
|
105
|
+
end
|
106
|
+
|
94
107
|
@model_class ||= model_class_name.constantize
|
95
108
|
end
|
96
109
|
|
@@ -188,6 +201,8 @@ module WillFilter
|
|
188
201
|
|
189
202
|
def order
|
190
203
|
@order ||= default_order
|
204
|
+
@order = default_order unless contains_column?(@order.to_sym)
|
205
|
+
@order
|
191
206
|
end
|
192
207
|
|
193
208
|
def default_order_type
|
@@ -196,6 +211,8 @@ module WillFilter
|
|
196
211
|
|
197
212
|
def order_type
|
198
213
|
@order_type ||= default_order_type
|
214
|
+
@order_type = default_order_type unless ['asc', 'desc'].include?(@order_type.to_s)
|
215
|
+
@order_type
|
199
216
|
end
|
200
217
|
|
201
218
|
def order_clause
|
@@ -380,15 +397,30 @@ module WillFilter
|
|
380
397
|
def self.deserialize_from_params(params)
|
381
398
|
params = HashWithIndifferentAccess.new(params) unless params.is_a?(HashWithIndifferentAccess)
|
382
399
|
params[:wf_type] = self.name unless params[:wf_type]
|
383
|
-
params[:wf_type].constantize
|
400
|
+
filter_class = params[:wf_type].constantize
|
401
|
+
filter_instance = filter_class.new
|
402
|
+
|
403
|
+
unless filter_instance.kind_of?(WillFilter::Filter)
|
404
|
+
raise WillFilter::FilterException.new("Invalid filter class. Filter classes must extand WillFilter::Filter.")
|
405
|
+
end
|
406
|
+
|
407
|
+
if WillFilter::Config.require_filter_extensions?
|
408
|
+
filter_instance.deserialize_from_params(params)
|
409
|
+
else
|
410
|
+
filter_class.new(params[:wf_model]).deserialize_from_params(params)
|
411
|
+
end
|
384
412
|
end
|
385
413
|
|
386
414
|
def deserialize_from_params(params)
|
387
415
|
params = HashWithIndifferentAccess.new(params) unless params.is_a?(HashWithIndifferentAccess)
|
416
|
+
|
417
|
+
# Validate sanity of user provided parameters
|
418
|
+
params.delete(:wf_order_type) unless [ 'asc', 'desc' ].include? params[:wf_order_type]
|
419
|
+
params.delete(:wf_order) unless self.class.columns.map(&:name).include? params[:wf_order]
|
420
|
+
|
388
421
|
@conditions = []
|
389
422
|
@match = params[:wf_match] || :all
|
390
423
|
@key = params[:wf_key] || self.id.to_s
|
391
|
-
self.model_class_name = params[:wf_model] if params[:wf_model]
|
392
424
|
|
393
425
|
@per_page = params[:wf_per_page] || default_per_page
|
394
426
|
@page = params[:page] || 1
|
@@ -3,9 +3,12 @@
|
|
3
3
|
<%= hidden_field_tag(:wf_dirty, "false") %>
|
4
4
|
<%= hidden_field_tag(:wf_submitted, "false") %>
|
5
5
|
<%= hidden_field_tag(:wf_name, wf_filter.name) %>
|
6
|
-
<%= hidden_field_tag(:wf_model, wf_filter.model_class_name) %>
|
7
6
|
<%= hidden_field_tag(:wf_export_format, "") %>
|
8
7
|
<%= hidden_field_tag(:wf_export_fields, "") %>
|
8
|
+
|
9
|
+
<% unless WillFilter::Config.require_filter_extensions? %>
|
10
|
+
<%= hidden_field_tag(:wf_model, wf_filter.model_class_name) %>
|
11
|
+
<% end %>
|
9
12
|
|
10
13
|
<div class="wf_header">
|
11
14
|
<% if wf_filter.show_save_options? %>
|
@@ -10,6 +10,34 @@
|
|
10
10
|
#############################################################################
|
11
11
|
|
12
12
|
defaults: &defaults
|
13
|
+
|
14
|
+
###########################################################################
|
15
|
+
#
|
16
|
+
# require_filter_extension makes the filter into an abstract class
|
17
|
+
# and will require you to subclass it in order for the filter to be
|
18
|
+
# serializeable. The following will no longer work:
|
19
|
+
#
|
20
|
+
# @users = User.filter(:params => params)
|
21
|
+
#
|
22
|
+
# Use your own filter class instead:
|
23
|
+
#
|
24
|
+
# @users = User.filter(:params => params, :filter => UserFilter)
|
25
|
+
#
|
26
|
+
# In the subclass you must provide the model name to be filtered by overloading:
|
27
|
+
#
|
28
|
+
# def model_class
|
29
|
+
# User
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
###########################################################################
|
33
|
+
|
34
|
+
require_filter_extensions: false
|
35
|
+
|
36
|
+
###########################################################################
|
37
|
+
# If you would like to see some JavaScript effects
|
38
|
+
# provide your own effects class and implement required methods
|
39
|
+
###########################################################################
|
40
|
+
|
13
41
|
effects_options:
|
14
42
|
enabled: false
|
15
43
|
script_path: "/will_filter/javascripts/will_filter_prototype_effects.js"
|
data/lib/will_filter/config.rb
CHANGED
metadata
CHANGED
@@ -1,75 +1,22 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: will_filter
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.0.4
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 3
|
8
|
-
- 0
|
9
|
-
- 3
|
10
|
-
version: 3.0.3
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Michael Berkovich
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
- !ruby/object:Gem::Dependency
|
22
|
-
prerelease: false
|
23
|
-
type: :runtime
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 7
|
30
|
-
segments:
|
31
|
-
- 3
|
32
|
-
- 0
|
33
|
-
- 0
|
34
|
-
version: 3.0.0
|
35
|
-
name: rails
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
prerelease: false
|
39
|
-
type: :runtime
|
40
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
hash: 1923831917
|
46
|
-
segments:
|
47
|
-
- 3
|
48
|
-
- 0
|
49
|
-
- pre
|
50
|
-
- 2
|
51
|
-
version: 3.0.pre2
|
52
|
-
name: will_paginate
|
53
|
-
version_requirements: *id002
|
54
|
-
description: Rails engine for filtering ActiveRecord model objects.
|
55
|
-
email: theiceberk@gmail.com
|
12
|
+
date: 2012-04-06 00:00:00.000000000Z
|
13
|
+
dependencies: []
|
14
|
+
description:
|
15
|
+
email:
|
56
16
|
executables: []
|
57
|
-
|
58
17
|
extensions: []
|
59
|
-
|
60
|
-
|
61
|
-
- LICENSE
|
62
|
-
- README.rdoc
|
63
|
-
files:
|
64
|
-
- .loadpath
|
65
|
-
- .project
|
66
|
-
- CHANGELOG.rdoc
|
67
|
-
- Gemfile
|
68
|
-
- Gemfile.lock
|
69
|
-
- LICENSE
|
70
|
-
- README.rdoc
|
71
|
-
- Rakefile
|
72
|
-
- VERSION
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
73
20
|
- app/controllers/application_controller.rb
|
74
21
|
- app/controllers/will_filter/calendar_controller.rb
|
75
22
|
- app/controllers/will_filter/exporter_controller.rb
|
@@ -99,7 +46,6 @@ files:
|
|
99
46
|
- app/views/will_filter/filter/containers/_numeric_range.html.erb
|
100
47
|
- app/views/will_filter/filter/containers/_text.html.erb
|
101
48
|
- app/views/will_filter/filter/index.html.erb
|
102
|
-
- config.ru
|
103
49
|
- config/application.rb
|
104
50
|
- config/boot.rb
|
105
51
|
- config/database.yml
|
@@ -109,12 +55,22 @@ files:
|
|
109
55
|
- config/environments/test.rb
|
110
56
|
- config/routes.rb
|
111
57
|
- config/will_filter/config.yml
|
112
|
-
-
|
113
|
-
-
|
114
|
-
-
|
115
|
-
-
|
116
|
-
-
|
117
|
-
-
|
58
|
+
- public/404.html
|
59
|
+
- public/422.html
|
60
|
+
- public/500.html
|
61
|
+
- public/favicon.ico
|
62
|
+
- public/robots.txt
|
63
|
+
- public/will_filter/images/buttons.png
|
64
|
+
- public/will_filter/images/calendar.png
|
65
|
+
- public/will_filter/images/clock.png
|
66
|
+
- public/will_filter/images/close.gif
|
67
|
+
- public/will_filter/images/results_table_th_active.gif
|
68
|
+
- public/will_filter/images/sort_arrow_all.gif
|
69
|
+
- public/will_filter/images/sort_bg.gif
|
70
|
+
- public/will_filter/images/spinner.gif
|
71
|
+
- public/will_filter/javascripts/will_filter.js
|
72
|
+
- public/will_filter/javascripts/will_filter_prototype_effects.js
|
73
|
+
- public/will_filter/stylesheets/will_filter.css
|
118
74
|
- lib/application_helper.rb
|
119
75
|
- lib/core_ext/active_record/base.rb
|
120
76
|
- lib/core_ext/array.rb
|
@@ -122,9 +78,7 @@ files:
|
|
122
78
|
- lib/generators/will_filter/templates/config.yml
|
123
79
|
- lib/generators/will_filter/templates/create_will_filter_tables.rb
|
124
80
|
- lib/generators/will_filter/will_filter_generator.rb
|
125
|
-
- lib/tasks/.gitkeep
|
126
81
|
- lib/tasks/will_filter_tasks.rake
|
127
|
-
- lib/will_filter.rb
|
128
82
|
- lib/will_filter/calendar.rb
|
129
83
|
- lib/will_filter/common_methods.rb
|
130
84
|
- lib/will_filter/config.rb
|
@@ -146,63 +100,29 @@ files:
|
|
146
100
|
- lib/will_filter/filter_condition.rb
|
147
101
|
- lib/will_filter/filter_container.rb
|
148
102
|
- lib/will_filter/filter_exception.rb
|
149
|
-
-
|
150
|
-
- pkg/will_filter-0.1.1.gem
|
151
|
-
- public/404.html
|
152
|
-
- public/422.html
|
153
|
-
- public/500.html
|
154
|
-
- public/favicon.ico
|
155
|
-
- public/robots.txt
|
156
|
-
- public/will_filter/images/buttons.png
|
157
|
-
- public/will_filter/images/calendar.png
|
158
|
-
- public/will_filter/images/clock.png
|
159
|
-
- public/will_filter/images/close.gif
|
160
|
-
- public/will_filter/images/results_table_th_active.gif
|
161
|
-
- public/will_filter/images/sort_arrow_all.gif
|
162
|
-
- public/will_filter/images/sort_bg.gif
|
163
|
-
- public/will_filter/images/spinner.gif
|
164
|
-
- public/will_filter/javascripts/will_filter.js
|
165
|
-
- public/will_filter/javascripts/will_filter_prototype_effects.js
|
166
|
-
- public/will_filter/stylesheets/will_filter.css
|
167
|
-
- script/rails
|
168
|
-
- test/functional/models/will_filter/filter_test.rb
|
169
|
-
- test/performance/browsing_test.rb
|
170
|
-
- test/test_helper.rb
|
171
|
-
- uninstall.rb
|
172
|
-
- will_filter.gemspec
|
173
|
-
has_rdoc: true
|
103
|
+
- lib/will_filter.rb
|
174
104
|
homepage: http://github.com/berk/will_filter
|
175
105
|
licenses: []
|
176
|
-
|
177
106
|
post_install_message:
|
178
107
|
rdoc_options: []
|
179
|
-
|
180
|
-
require_paths:
|
108
|
+
require_paths:
|
181
109
|
- lib
|
182
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
183
111
|
none: false
|
184
|
-
requirements:
|
185
|
-
- -
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
|
188
|
-
|
189
|
-
- 0
|
190
|
-
version: "0"
|
191
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
117
|
none: false
|
193
|
-
requirements:
|
194
|
-
- -
|
195
|
-
- !ruby/object:Gem::Version
|
196
|
-
|
197
|
-
segments:
|
198
|
-
- 0
|
199
|
-
version: "0"
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
200
122
|
requirements: []
|
201
|
-
|
202
123
|
rubyforge_project:
|
203
|
-
rubygems_version: 1.
|
124
|
+
rubygems_version: 1.8.11
|
204
125
|
signing_key:
|
205
126
|
specification_version: 3
|
206
127
|
summary: Rails engine for filtering ActiveRecord model objects.
|
207
128
|
test_files: []
|
208
|
-
|
data/.loadpath
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<loadpath>
|
3
|
-
<pathentry path="" type="src"/>
|
4
|
-
<pathentry path="org.rubypeople.rdt.launching.RUBY_CONTAINER" type="con"/>
|
5
|
-
<pathentry path="GEM_LIB/activerecord-2.3.2/lib" type="var"/>
|
6
|
-
<pathentry path="GEM_LIB/rake-0.8.4/lib" type="var"/>
|
7
|
-
<pathentry path="GEM_LIB/activeresource-2.3.2/lib" type="var"/>
|
8
|
-
<pathentry path="GEM_LIB/rails-2.3.2/lib" type="var"/>
|
9
|
-
<pathentry path="GEM_LIB/actionmailer-2.3.2/lib" type="var"/>
|
10
|
-
<pathentry path="GEM_LIB/actionpack-2.3.2/lib" type="var"/>
|
11
|
-
<pathentry path="GEM_LIB/activesupport-2.3.2/lib" type="var"/>
|
12
|
-
</loadpath>
|
data/.project
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<projectDescription>
|
3
|
-
<name>will_filter</name>
|
4
|
-
<comment></comment>
|
5
|
-
<projects>
|
6
|
-
</projects>
|
7
|
-
<buildSpec>
|
8
|
-
<buildCommand>
|
9
|
-
<name>org.rubypeople.rdt.core.rubybuilder</name>
|
10
|
-
<arguments>
|
11
|
-
</arguments>
|
12
|
-
</buildCommand>
|
13
|
-
</buildSpec>
|
14
|
-
<natures>
|
15
|
-
<nature>org.rubypeople.rdt.core.rubynature</nature>
|
16
|
-
<nature>org.radrails.rails.core.railsnature</nature>
|
17
|
-
</natures>
|
18
|
-
</projectDescription>
|
data/CHANGELOG.rdoc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
== 0.1.0, released 2011-05-29
|
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
abstract (1.0.0)
|
5
|
-
actionmailer (3.0.7)
|
6
|
-
actionpack (= 3.0.7)
|
7
|
-
mail (~> 2.2.15)
|
8
|
-
actionpack (3.0.7)
|
9
|
-
activemodel (= 3.0.7)
|
10
|
-
activesupport (= 3.0.7)
|
11
|
-
builder (~> 2.1.2)
|
12
|
-
erubis (~> 2.6.6)
|
13
|
-
i18n (~> 0.5.0)
|
14
|
-
rack (~> 1.2.1)
|
15
|
-
rack-mount (~> 0.6.14)
|
16
|
-
rack-test (~> 0.5.7)
|
17
|
-
tzinfo (~> 0.3.23)
|
18
|
-
activemodel (3.0.7)
|
19
|
-
activesupport (= 3.0.7)
|
20
|
-
builder (~> 2.1.2)
|
21
|
-
i18n (~> 0.5.0)
|
22
|
-
activerecord (3.0.7)
|
23
|
-
activemodel (= 3.0.7)
|
24
|
-
activesupport (= 3.0.7)
|
25
|
-
arel (~> 2.0.2)
|
26
|
-
tzinfo (~> 0.3.23)
|
27
|
-
activeresource (3.0.7)
|
28
|
-
activemodel (= 3.0.7)
|
29
|
-
activesupport (= 3.0.7)
|
30
|
-
activesupport (3.0.7)
|
31
|
-
arel (2.0.10)
|
32
|
-
builder (2.1.2)
|
33
|
-
erubis (2.6.6)
|
34
|
-
abstract (>= 1.0.0)
|
35
|
-
i18n (0.5.0)
|
36
|
-
mail (2.2.19)
|
37
|
-
activesupport (>= 2.3.6)
|
38
|
-
i18n (>= 0.4.0)
|
39
|
-
mime-types (~> 1.16)
|
40
|
-
treetop (~> 1.4.8)
|
41
|
-
mime-types (1.16)
|
42
|
-
polyglot (0.3.1)
|
43
|
-
rack (1.2.3)
|
44
|
-
rack-mount (0.6.14)
|
45
|
-
rack (>= 1.0.0)
|
46
|
-
rack-test (0.5.7)
|
47
|
-
rack (>= 1.0)
|
48
|
-
rails (3.0.7)
|
49
|
-
actionmailer (= 3.0.7)
|
50
|
-
actionpack (= 3.0.7)
|
51
|
-
activerecord (= 3.0.7)
|
52
|
-
activeresource (= 3.0.7)
|
53
|
-
activesupport (= 3.0.7)
|
54
|
-
bundler (~> 1.0)
|
55
|
-
railties (= 3.0.7)
|
56
|
-
railties (3.0.7)
|
57
|
-
actionpack (= 3.0.7)
|
58
|
-
activesupport (= 3.0.7)
|
59
|
-
rake (>= 0.8.7)
|
60
|
-
thor (~> 0.14.4)
|
61
|
-
rake (0.9.1)
|
62
|
-
thor (0.14.6)
|
63
|
-
treetop (1.4.9)
|
64
|
-
polyglot (>= 0.3.1)
|
65
|
-
tzinfo (0.3.27)
|
66
|
-
will_paginate (3.0.pre2)
|
67
|
-
|
68
|
-
PLATFORMS
|
69
|
-
ruby
|
70
|
-
|
71
|
-
DEPENDENCIES
|
72
|
-
rails (~> 3.0.0)
|
73
|
-
will_paginate (~> 3.0.pre2)
|
data/LICENSE
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
Copyright (c) 2011 Michael Berkovich
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
4
|
-
this software and associated documentation files (the "Software"), to deal in
|
5
|
-
the Software without restriction, including without limitation the rights to
|
6
|
-
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
7
|
-
the Software, and to permit persons to whom the Software is furnished to do so,
|
8
|
-
subject to the following conditions:
|
9
|
-
|
10
|
-
The above copyright notice and this permission notice shall be included in all
|
11
|
-
copies or substantial portions of the Software.
|
12
|
-
|
13
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
15
|
-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
16
|
-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
17
|
-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
18
|
-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
= WillFilter
|
2
|
-
|
3
|
-
will_filter is a Rails engine plugin that extends the functionality of will_paginate by adding filters to your pages.
|
4
|
-
|
5
|
-
== Preamble
|
6
|
-
|
7
|
-
If you ever had to build an admin tool for your web site that displayed a list of objects that can be filtered using
|
8
|
-
various criteria, this plugin will make your life easier. Adding a filtered page can now be
|
9
|
-
a matter of adding two lines of code - one to your controller and one to your view. See examples below.
|
10
|
-
|
11
|
-
For advanced samples of how to use the filters, please download and install the following project:
|
12
|
-
|
13
|
-
http://github.com/berk/will_filter_examples
|
14
|
-
|
15
|
-
== Installation Instructions
|
16
|
-
|
17
|
-
Add the following gems to your Gemfile:
|
18
|
-
|
19
|
-
gem "will_paginate", "~> 3.0.pre2"
|
20
|
-
gem 'will_filter', "~> 3.0.0"
|
21
|
-
|
22
|
-
And run:
|
23
|
-
|
24
|
-
$ bundle install
|
25
|
-
|
26
|
-
To configure and initialize will_filter engine, run the following commands:
|
27
|
-
|
28
|
-
$ rails generate will_filter
|
29
|
-
$ rake db:migrate
|
30
|
-
|
31
|
-
== Examples
|
32
|
-
|
33
|
-
To add a filtered result-set to your controller use the following method call:
|
34
|
-
|
35
|
-
class OrderController < ApplicationController
|
36
|
-
|
37
|
-
def index
|
38
|
-
@orders = Order.filter(:params => params)
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
Note: 'Order' is a Rails ActiveRecord model
|
44
|
-
|
45
|
-
Now all you have to do is create a view for this action and add the following tag where you want the filter to be rendered:
|
46
|
-
|
47
|
-
<%= will_filter(@orders) %>
|
48
|
-
|
49
|
-
And optionally you can do (for results table):
|
50
|
-
|
51
|
-
<%= will_filter_table_tag(@orders) %>
|
52
|
-
|
53
|
-
That's it. This will render a filter box with various conditions, operators and values for the model object you selected.
|
54
|
-
|
55
|
-
Below are a couple of screenshot of what the filter looks like when it is rendered on a page:
|
56
|
-
|
57
|
-
http://wiki.tr8n.org/images/d/da/Will_filter_1.png
|
58
|
-
|
59
|
-
http://wiki.tr8n.org/images/e/ec/Will_filter_2.png
|
60
|
-
|
61
|
-
will_filter_examples project contains some samples that show you how to customize filters and much more
|
62
|
-
|
63
|
-
git://github.com/berk/will_filter_examples.git
|
64
|
-
|
65
|
-
Live will_filter_examples application is running here:
|
66
|
-
|
67
|
-
http://wf.tr8n.org
|
68
|
-
|
69
|
-
If you have any questions, comments or suggestions, email me at michael@geni.com
|
70
|
-
|
71
|
-
== Authors and credits
|
72
|
-
|
73
|
-
Authors:: Michael Berkovich
|
74
|
-
|
data/Rakefile
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2011 Michael Berkovich
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
-
# a copy of this software and associated documentation files (the
|
6
|
-
# "Software"), to deal in the Software without restriction, including
|
7
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
-
# the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be
|
13
|
-
# included in all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
-
#++
|
23
|
-
|
24
|
-
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
25
|
-
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
26
|
-
|
27
|
-
require 'rake/testtask'
|
28
|
-
|
29
|
-
Rake::TestTask.new do |test|
|
30
|
-
test.pattern = 'test/**/*_test.rb'
|
31
|
-
test.libs << 'test'
|
32
|
-
end
|
33
|
-
|
34
|
-
begin
|
35
|
-
require 'jeweler'
|
36
|
-
Jeweler::Tasks.new do |s|
|
37
|
-
s.name = "will_filter"
|
38
|
-
s.summary = "Rails engine for filtering ActiveRecord model objects."
|
39
|
-
s.email = "theiceberk@gmail.com"
|
40
|
-
s.homepage = "http://github.com/berk/will_filter"
|
41
|
-
s.description = "Rails engine for filtering ActiveRecord model objects."
|
42
|
-
s.authors = ["Michael Berkovich"]
|
43
|
-
end
|
44
|
-
Jeweler::GemcutterTasks.new
|
45
|
-
rescue LoadError
|
46
|
-
puts "Jeweler not available. Install it with: sudo gem install jeweler"
|
47
|
-
end
|
48
|
-
|
49
|
-
#require File.expand_path('../config/application', __FILE__)
|
50
|
-
#require 'rake'
|
51
|
-
#
|
52
|
-
#WillFilter::Application.load_tasks
|
53
|
-
|
54
|
-
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
3.0.3
|
data/config.ru
DELETED
data/db/development.sqlite3
DELETED
Binary file
|
@@ -1,19 +0,0 @@
|
|
1
|
-
class CreateWillFilterTables < ActiveRecord::Migration
|
2
|
-
def self.up
|
3
|
-
create_table :wf_filters do |t|
|
4
|
-
t.string :type
|
5
|
-
t.string :name
|
6
|
-
t.text :data
|
7
|
-
t.integer :user_id
|
8
|
-
t.string :model_class_name
|
9
|
-
|
10
|
-
t.timestamps
|
11
|
-
end
|
12
|
-
|
13
|
-
add_index :wf_filters, [:user_id]
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.down
|
17
|
-
drop_table :wf_filters
|
18
|
-
end
|
19
|
-
end
|
data/db/seeds.rb
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
# This file should contain all the record creation needed to seed the database with its default values.
|
2
|
-
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
|
3
|
-
#
|
4
|
-
# Examples:
|
5
|
-
#
|
6
|
-
# cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
|
7
|
-
# Mayor.create(:name => 'Daley', :city => cities.first)
|
data/db/test.sqlite3
DELETED
Binary file
|
data/doc/README_FOR_APP
DELETED
data/examples/README
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Please install will_filter_examples project to see how to configure the model_filters.
|
data/lib/tasks/.gitkeep
DELETED
File without changes
|
data/pkg/will_filter-0.1.0.gem
DELETED
Binary file
|
data/pkg/will_filter-0.1.1.gem
DELETED
Binary file
|
data/script/rails
DELETED
@@ -1,6 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
|
-
|
4
|
-
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
5
|
-
require File.expand_path('../../config/boot', __FILE__)
|
6
|
-
require 'rails/commands'
|
@@ -1,297 +0,0 @@
|
|
1
|
-
require File.expand_path('../../../../test_helper', __FILE__)
|
2
|
-
|
3
|
-
module WillFilter
|
4
|
-
class FilterTest < ActiveSupport::TestCase
|
5
|
-
|
6
|
-
test "boolean container" do
|
7
|
-
params = {:wf_type=>"UserFilter",
|
8
|
-
:wf_c0=>:admin,
|
9
|
-
:wf_o0=>:is,
|
10
|
-
:wf_v0_0=>"1"}
|
11
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
12
|
-
assert_equal 1, filter.conditions.size
|
13
|
-
assert_equal 2, filter.sql_conditions.size
|
14
|
-
assert_equal " users.admin = ? ", filter.sql_conditions.first
|
15
|
-
assert_equal true, filter.sql_conditions.last
|
16
|
-
|
17
|
-
params = {:wf_type=>"UserFilter",
|
18
|
-
:wf_c0=>:admin,
|
19
|
-
:wf_o0=>:is,
|
20
|
-
:wf_v0_0=>"0"}
|
21
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
22
|
-
assert_equal 1, filter.conditions.size
|
23
|
-
assert_equal 2, filter.sql_conditions.size
|
24
|
-
assert_equal " users.admin = ? ", filter.sql_conditions.first
|
25
|
-
assert_equal false, filter.sql_conditions.last
|
26
|
-
end
|
27
|
-
|
28
|
-
test "date range container" do
|
29
|
-
params = {:wf_type=>"UserFilter",
|
30
|
-
:wf_c0=>:birth_date,
|
31
|
-
:wf_o0=>:is_in_the_range,
|
32
|
-
:wf_v0_0=>"1971-11-09",
|
33
|
-
:wf_v0_1=>"1974-11-09"}
|
34
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
35
|
-
assert_equal 1, filter.conditions.size
|
36
|
-
assert_equal 3, filter.sql_conditions.size
|
37
|
-
assert_equal " (users.birth_date >= ? and users.birth_date <= ?) ", filter.sql_conditions.first
|
38
|
-
end
|
39
|
-
|
40
|
-
test "date time range container" do
|
41
|
-
params = {:wf_type=>"UserFilter",
|
42
|
-
:wf_c0=>:created_at,
|
43
|
-
:wf_o0=>:is_in_the_range,
|
44
|
-
:wf_v0_0=>"1971-11-09 8:00",
|
45
|
-
:wf_v0_1=>"1971-11-09 12:00"}
|
46
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
47
|
-
assert_equal 1, filter.conditions.size
|
48
|
-
assert_equal 3, filter.sql_conditions.size
|
49
|
-
assert_equal " (users.created_at >= ? and users.created_at <= ?) ", filter.sql_conditions.first
|
50
|
-
end
|
51
|
-
|
52
|
-
test "date time container" do
|
53
|
-
params = {:wf_type=>"UserFilter",
|
54
|
-
:wf_c0=>:created_at,
|
55
|
-
:wf_o0=>:is,
|
56
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
57
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
58
|
-
assert_equal 1, filter.conditions.size
|
59
|
-
assert_equal 2, filter.sql_conditions.size
|
60
|
-
assert_equal " users.created_at = ? ", filter.sql_conditions.first
|
61
|
-
|
62
|
-
params = {:wf_type=>"UserFilter",
|
63
|
-
:wf_c0=>:created_at,
|
64
|
-
:wf_o0=>:is_not,
|
65
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
66
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
67
|
-
assert_equal 1, filter.conditions.size
|
68
|
-
assert_equal 2, filter.sql_conditions.size
|
69
|
-
assert_equal " users.created_at <> ? ", filter.sql_conditions.first
|
70
|
-
|
71
|
-
params = {:wf_type=>"UserFilter",
|
72
|
-
:wf_c0=>:created_at,
|
73
|
-
:wf_o0=>:is_after,
|
74
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
75
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
76
|
-
assert_equal 1, filter.conditions.size
|
77
|
-
assert_equal 2, filter.sql_conditions.size
|
78
|
-
assert_equal " users.created_at > ? ", filter.sql_conditions.first
|
79
|
-
|
80
|
-
params = {:wf_type=>"UserFilter",
|
81
|
-
:wf_c0=>:created_at,
|
82
|
-
:wf_o0=>:is_before,
|
83
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
84
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
85
|
-
assert_equal 1, filter.conditions.size
|
86
|
-
assert_equal 2, filter.sql_conditions.size
|
87
|
-
assert_equal " users.created_at < ? ", filter.sql_conditions.first
|
88
|
-
end
|
89
|
-
|
90
|
-
test "date container" do
|
91
|
-
params = {:wf_type=>"UserFilter",
|
92
|
-
:wf_c0=>:birth_date,
|
93
|
-
:wf_o0=>:is,
|
94
|
-
:wf_v0_0=>"1971-11-09"}
|
95
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
96
|
-
assert_equal 1, filter.conditions.size
|
97
|
-
assert_equal 2, filter.sql_conditions.size
|
98
|
-
assert_equal " users.birth_date = ? ", filter.sql_conditions.first
|
99
|
-
|
100
|
-
params = {:wf_type=>"UserFilter",
|
101
|
-
:wf_c0=>:birth_date,
|
102
|
-
:wf_o0=>:is_not,
|
103
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
104
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
105
|
-
assert_equal 1, filter.conditions.size
|
106
|
-
assert_equal 2, filter.sql_conditions.size
|
107
|
-
assert_equal " users.birth_date <> ? ", filter.sql_conditions.first
|
108
|
-
|
109
|
-
params = {:wf_type=>"UserFilter",
|
110
|
-
:wf_c0=>:birth_date,
|
111
|
-
:wf_o0=>:is_after,
|
112
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
113
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
114
|
-
assert_equal 1, filter.conditions.size
|
115
|
-
assert_equal 2, filter.sql_conditions.size
|
116
|
-
assert_equal " users.birth_date > ? ", filter.sql_conditions.first
|
117
|
-
|
118
|
-
params = {:wf_type=>"UserFilter",
|
119
|
-
:wf_c0=>:birth_date,
|
120
|
-
:wf_o0=>:is_before,
|
121
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
122
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
123
|
-
assert_equal 1, filter.conditions.size
|
124
|
-
assert_equal 2, filter.sql_conditions.size
|
125
|
-
assert_equal " users.birth_date < ? ", filter.sql_conditions.first
|
126
|
-
end
|
127
|
-
|
128
|
-
test "numeric delimited container" do
|
129
|
-
params = {:wf_type=>"UserFilter",
|
130
|
-
:wf_c0=>:id,
|
131
|
-
:wf_o0=>:is_in,
|
132
|
-
:wf_v0_0=>"1,2,3,4,5,6"}
|
133
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
134
|
-
assert_equal 1, filter.conditions.size
|
135
|
-
assert_equal 2, filter.sql_conditions.size
|
136
|
-
assert_equal " users.id in (?) ", filter.sql_conditions.first
|
137
|
-
end
|
138
|
-
|
139
|
-
test "numeric range container" do
|
140
|
-
params = {:wf_type=>"UserFilter",
|
141
|
-
:wf_c0=>:id,
|
142
|
-
:wf_o0=>:is_in_the_range,
|
143
|
-
:wf_v0_0=>"1",
|
144
|
-
:wf_v0_1=>"10"}
|
145
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
146
|
-
assert_equal 1, filter.conditions.size
|
147
|
-
assert_equal 3, filter.sql_conditions.size
|
148
|
-
assert_equal " (users.id >= ? and users.id <= ?) ", filter.sql_conditions.first
|
149
|
-
end
|
150
|
-
|
151
|
-
test "numeric container" do
|
152
|
-
params = {:wf_type=>"UserFilter",
|
153
|
-
:wf_c0=>:id,
|
154
|
-
:wf_o0=>:is,
|
155
|
-
:wf_v0_0=>"1"}
|
156
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
157
|
-
assert_equal 1, filter.conditions.size
|
158
|
-
assert_equal 2, filter.sql_conditions.size
|
159
|
-
assert_equal " users.id = ? ", filter.sql_conditions.first
|
160
|
-
|
161
|
-
params = {:wf_type=>"UserFilter",
|
162
|
-
:wf_c0=>:id,
|
163
|
-
:wf_o0=>:is_not,
|
164
|
-
:wf_v0_0=>"1"}
|
165
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
166
|
-
assert_equal 1, filter.conditions.size
|
167
|
-
assert_equal 2, filter.sql_conditions.size
|
168
|
-
assert_equal " users.id <> ? ", filter.sql_conditions.first
|
169
|
-
|
170
|
-
params = {:wf_type=>"UserFilter",
|
171
|
-
:wf_c0=>:id,
|
172
|
-
:wf_o0=>:is_less_than,
|
173
|
-
:wf_v0_0=>"1"}
|
174
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
175
|
-
assert_equal 1, filter.conditions.size
|
176
|
-
assert_equal 2, filter.sql_conditions.size
|
177
|
-
assert_equal " users.id < ? ", filter.sql_conditions.first
|
178
|
-
|
179
|
-
params = {:wf_type=>"UserFilter",
|
180
|
-
:wf_c0=>:id,
|
181
|
-
:wf_o0=>:is_greater_than,
|
182
|
-
:wf_v0_0=>"1"}
|
183
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
184
|
-
assert_equal 1, filter.conditions.size
|
185
|
-
assert_equal 2, filter.sql_conditions.size
|
186
|
-
assert_equal " users.id > ? ", filter.sql_conditions.first
|
187
|
-
end
|
188
|
-
|
189
|
-
test "single date container" do
|
190
|
-
params = {:wf_type=>"UserFilter",
|
191
|
-
:wf_c0=>:created_at,
|
192
|
-
:wf_o0=>:is_on,
|
193
|
-
:wf_v0_0=>"1971-11-09"}
|
194
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
195
|
-
assert_equal 1, filter.conditions.size
|
196
|
-
assert_equal 3, filter.sql_conditions.size
|
197
|
-
assert_equal " users.created_at >= ? and users.created_at < ? ", filter.sql_conditions.first
|
198
|
-
|
199
|
-
params = {:wf_type=>"UserFilter",
|
200
|
-
:wf_c0=>:created_at,
|
201
|
-
:wf_o0=>:is_not_on,
|
202
|
-
:wf_v0_0=>"1971-11-09"}
|
203
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
204
|
-
assert_equal 1, filter.conditions.size
|
205
|
-
assert_equal 3, filter.sql_conditions.size
|
206
|
-
assert_equal " users.created_at < ? and users.created_at >= ? ", filter.sql_conditions.first
|
207
|
-
end
|
208
|
-
|
209
|
-
test "text delimited container" do
|
210
|
-
params = {:wf_type=>"UserFilter",
|
211
|
-
:wf_c0=>:name,
|
212
|
-
:wf_o0=>:is_in,
|
213
|
-
:wf_v0_0=>"a,b,c,d,e,f,g"}
|
214
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
215
|
-
assert_equal 1, filter.conditions.size
|
216
|
-
assert_equal 2, filter.sql_conditions.size
|
217
|
-
assert_equal " users.name in (?) ", filter.sql_conditions.first
|
218
|
-
|
219
|
-
params = {:wf_type=>"UserFilter",
|
220
|
-
:wf_c0=>:name,
|
221
|
-
:wf_o0=>:is_not_in,
|
222
|
-
:wf_v0_0=>"a,b,c,d,e,f,g"}
|
223
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
224
|
-
assert_equal 1, filter.conditions.size
|
225
|
-
assert_equal 2, filter.sql_conditions.size
|
226
|
-
assert_equal " users.name not in (?) ", filter.sql_conditions.first
|
227
|
-
end
|
228
|
-
|
229
|
-
test "text container" do
|
230
|
-
params = {:wf_type=>"UserFilter",
|
231
|
-
:wf_c0=>:name,
|
232
|
-
:wf_o0=>:is,
|
233
|
-
:wf_v0_0=>"Mike"}
|
234
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
235
|
-
assert_equal 2, filter.sql_conditions.size
|
236
|
-
assert_equal " users.name = ? ", filter.sql_conditions.first
|
237
|
-
assert_equal "Mike", filter.sql_conditions.last
|
238
|
-
|
239
|
-
params = {:wf_type=>"UserFilter",
|
240
|
-
:wf_c0=>:name,
|
241
|
-
:wf_o0=>:is_not,
|
242
|
-
:wf_v0_0=>"Mike"}
|
243
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
244
|
-
assert_equal 2, filter.sql_conditions.size
|
245
|
-
assert_equal " users.name <> ? ", filter.sql_conditions.first
|
246
|
-
|
247
|
-
params = {:wf_type=>"UserFilter",
|
248
|
-
:wf_c0=>:name,
|
249
|
-
:wf_o0=>:contains,
|
250
|
-
:wf_v0_0=>"Mike"}
|
251
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
252
|
-
assert_equal 2, filter.sql_conditions.size
|
253
|
-
assert_equal " users.name like ? ", filter.sql_conditions.first
|
254
|
-
|
255
|
-
params = {:wf_type=>"UserFilter",
|
256
|
-
:wf_c0=>:name,
|
257
|
-
:wf_o0=>:does_not_contain,
|
258
|
-
:wf_v0_0=>"Mike"}
|
259
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
260
|
-
assert_equal 2, filter.sql_conditions.size
|
261
|
-
assert_equal " users.name not like ? ", filter.sql_conditions.first
|
262
|
-
|
263
|
-
params = {:wf_type=>"UserFilter",
|
264
|
-
:wf_c0=>:name,
|
265
|
-
:wf_o0=>:starts_with,
|
266
|
-
:wf_v0_0=>"Mike"}
|
267
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
268
|
-
assert_equal 2, filter.sql_conditions.size
|
269
|
-
assert_equal " users.name like ? ", filter.sql_conditions.first
|
270
|
-
assert_equal "Mike%", filter.sql_conditions.last
|
271
|
-
|
272
|
-
params = {:wf_type=>"UserFilter",
|
273
|
-
:wf_c0=>:name,
|
274
|
-
:wf_o0=>:ends_with,
|
275
|
-
:wf_v0_0=>"Mike"}
|
276
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
277
|
-
assert_equal 2, filter.sql_conditions.size
|
278
|
-
assert_equal " users.name like ? ", filter.sql_conditions.first
|
279
|
-
assert_equal "%Mike", filter.sql_conditions.last
|
280
|
-
end
|
281
|
-
|
282
|
-
test "compound filter" do
|
283
|
-
params = {:wf_type=>"UserFilter",
|
284
|
-
:wf_c0=>:name,
|
285
|
-
:wf_o0=>:is,
|
286
|
-
:wf_v0_0=>"Mike",
|
287
|
-
:wf_c1=>:birth_date,
|
288
|
-
:wf_o1=>:is_before,
|
289
|
-
:wf_v1_0=>"1971-11-09 8:00"
|
290
|
-
}
|
291
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
292
|
-
assert_equal 3, filter.sql_conditions.size
|
293
|
-
assert_equal " users.name = ? AND users.birth_date < ? ", filter.sql_conditions.first
|
294
|
-
end
|
295
|
-
|
296
|
-
end
|
297
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
ENV["RAILS_ENV"] = "test"
|
2
|
-
require File.expand_path('../../config/environment', __FILE__)
|
3
|
-
require 'rails/test_help'
|
4
|
-
|
5
|
-
class ActiveSupport::TestCase
|
6
|
-
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
|
7
|
-
#
|
8
|
-
# Note: You'll currently still have to declare fixtures explicitly in integration tests
|
9
|
-
# -- they do not yet inherit this setting
|
10
|
-
fixtures :all
|
11
|
-
|
12
|
-
# Add more helper methods to be used by all tests here...
|
13
|
-
end
|
14
|
-
|
15
|
-
# Dummy UserFilter object for testing filter containers
|
16
|
-
class UserFilter < WillFilter::Filter
|
17
|
-
def table_name
|
18
|
-
"users"
|
19
|
-
end
|
20
|
-
|
21
|
-
def definition
|
22
|
-
{:id=>
|
23
|
-
{:is_provided=>"nil",
|
24
|
-
:is_not_provided=>"nil",
|
25
|
-
:is=>"numeric",
|
26
|
-
:is_not=>"numeric",
|
27
|
-
:is_less_than=>"numeric",
|
28
|
-
:is_greater_than=>"numeric",
|
29
|
-
:is_in_the_range=>"numeric_range",
|
30
|
-
:is_in=>"numeric_delimited",
|
31
|
-
:is_filtered_by=>:filter_list},
|
32
|
-
:name=>
|
33
|
-
{:is_provided=>"nil",
|
34
|
-
:is_not_provided=>"nil",
|
35
|
-
:is=>"text",
|
36
|
-
:is_not=>"text",
|
37
|
-
:contains=>"text",
|
38
|
-
:does_not_contain=>"text",
|
39
|
-
:starts_with=>"text",
|
40
|
-
:ends_with=>"text",
|
41
|
-
:is_in=>"text_delimited",
|
42
|
-
:is_not_in=>"text_delimited"},
|
43
|
-
:admin=>
|
44
|
-
{:is_provided=>"nil",
|
45
|
-
:is_not_provided=>"nil",
|
46
|
-
:is=>"boolean"
|
47
|
-
},
|
48
|
-
:birth_date =>
|
49
|
-
{:is_provided=>"nil",
|
50
|
-
:is_not_provided=>"nil",
|
51
|
-
:is=>"date",
|
52
|
-
:is_not=>"date",
|
53
|
-
:is_after=>"date",
|
54
|
-
:is_before=>"date",
|
55
|
-
:is_in_the_range=>"date_range"
|
56
|
-
},
|
57
|
-
:created_at=>
|
58
|
-
{:is_provided=>"nil",
|
59
|
-
:is_not_provided=>"nil",
|
60
|
-
:is=>"date_time",
|
61
|
-
:is_not=>"date_time",
|
62
|
-
:is_after=>"date_time",
|
63
|
-
:is_before=>"date_time",
|
64
|
-
:is_in_the_range=>"date_time_range",
|
65
|
-
:is_on=>"single_date",
|
66
|
-
:is_not_on=>"single_date"}
|
67
|
-
}
|
68
|
-
end
|
69
|
-
|
70
|
-
|
71
|
-
end
|
data/uninstall.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2010 Michael Berkovich, Geni Inc
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
-
# a copy of this software and associated documentation files (the
|
6
|
-
# "Software"), to deal in the Software without restriction, including
|
7
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
-
# the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be
|
13
|
-
# included in all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
-
#++
|
23
|
-
|
24
|
-
# Uninstall hook code here
|