easy_filter 0.1.1 → 0.2.0
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.
- checksums.yaml +5 -13
- data/.rubocop.yml +6 -95
- data/.ruby-version +1 -1
- data/.travis.yml +2 -2
- data/CHANGELOG.md +29 -0
- data/README.md +3 -3
- data/app/assets/javascripts/easy_filter.js +22 -12
- data/app/views/easy_filter/_field_array.html.erb +5 -5
- data/app/views/easy_filter/_field_datetime.html.erb +2 -2
- data/easy_filter.gemspec +2 -0
- data/lib/easy_filter/engine.rb +2 -0
- data/lib/easy_filter/model_additions.rb +47 -22
- data/lib/easy_filter/version.rb +1 -1
- data/lib/easy_filter/view_helpers.rb +48 -27
- data/spec/easy_filter/model_additions_spec.rb +13 -5
- metadata +50 -22
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OTQ5Y2ExMDEyMWJkNzE5OGJiMGJlNGNjMGEzOWI2MmQ5NTNlMzI2Yw==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 33a6ad9f7885ba310d7af29cfbcc4079bdfe873b
|
4
|
+
data.tar.gz: aebb6dbfa96193f59ace2196b4cc53d4574f0baf
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
ZDU3YjA3ZmE0N2VkM2NiMDJlN2Y3ZTZiZDdmMzhjOTkxNGNhYzU5NjA4NTNh
|
11
|
-
YzMyZTc1ODkzNjM3NmU4NWJjZjU3ZDI2MmE3ZDY5OTA3OTU5Nzk=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
OTZhNDdmYjY0ZWIzYjI4MzdlZjVjZjY3N2Y3ODRhMWViMDU0MDg5NzVmMjc2
|
14
|
-
Zjc0MGViNDhhNTBhNjdlNWUxYTVhNGEyM2U0ZDUxYzcwYTEwNDg1YmIyZTkw
|
15
|
-
MDMyOGJmNDI2NzYzY2ZhMGUwNTFhMjg0NDlkNTE1YjgwMWZmNjU=
|
6
|
+
metadata.gz: c3185343808ee0ea0f6c2a717dad50b7e253f05ee959c6f3fe3441e7213d6c7c13830ceebcd8d5d572f7506353202d3470783a7e96b0a87f1d42122732a21c27
|
7
|
+
data.tar.gz: bb892f3bfbceaf2a07a727e4cb91bd19905425a0a4660c28872b4bbd5e661cf5213a3c4cba4be04b1e79ff362dbe247bcf2a1a0c8fd3f6e2abfe1214afa9fd26
|
data/.rubocop.yml
CHANGED
@@ -1,112 +1,23 @@
|
|
1
|
-
###########################
|
2
|
-
# Configuration for rubocop
|
3
|
-
#
|
4
|
-
# Most of these are disabling existing cops, primarily
|
5
|
-
# due to a smattering of different styles and loose
|
6
|
-
# guidlines for contributions.
|
7
|
-
#
|
8
|
-
# Any of these may be changed.
|
9
|
-
|
10
1
|
MethodLength:
|
11
2
|
Max: 200
|
12
3
|
|
13
4
|
LineLength:
|
14
5
|
Max: 160
|
15
6
|
|
16
|
-
|
17
|
-
Enabled: false
|
18
|
-
|
19
|
-
# Prefer single-quotes
|
20
|
-
StringLiterals:
|
21
|
-
Enabled: false
|
22
|
-
|
23
|
-
AlignParameters:
|
24
|
-
Enabled: false
|
25
|
-
|
26
|
-
SpaceAroundOperators:
|
27
|
-
Enabled: false
|
28
|
-
|
29
|
-
Encoding:
|
30
|
-
Enabled: false
|
31
|
-
|
32
|
-
PercentR:
|
33
|
-
Enabled: false
|
34
|
-
|
35
|
-
SpaceAroundBraces:
|
7
|
+
FileName:
|
36
8
|
Enabled: false
|
37
9
|
|
38
|
-
|
10
|
+
PerceivedComplexity:
|
39
11
|
Enabled: false
|
40
12
|
|
41
|
-
|
13
|
+
CyclomaticComplexity:
|
42
14
|
Enabled: false
|
43
15
|
|
44
|
-
|
16
|
+
ClassLength:
|
45
17
|
Enabled: false
|
46
18
|
|
47
|
-
|
48
|
-
Enabled: false
|
49
|
-
|
50
|
-
SymbolName:
|
51
|
-
Enabled: false
|
52
|
-
|
53
|
-
ReduceArguments:
|
54
|
-
Enabled: false
|
55
|
-
|
56
|
-
RescueException:
|
57
|
-
Enabled: false
|
58
|
-
|
59
|
-
Syntax:
|
60
|
-
Enabled: false
|
61
|
-
|
62
|
-
WordArray:
|
19
|
+
Documentation:
|
63
20
|
Enabled: false
|
64
21
|
|
65
22
|
IfUnlessModifier:
|
66
|
-
Enabled: false
|
67
|
-
|
68
|
-
ParenthesesAroundCondition:
|
69
|
-
Enabled: false
|
70
|
-
|
71
|
-
MethodAndVariableSnakeCase:
|
72
|
-
Enabled: false
|
73
|
-
|
74
|
-
AvoidClassVars:
|
75
|
-
Enabled: false
|
76
|
-
|
77
|
-
WhileUntilModifier:
|
78
|
-
Enabled: false
|
79
|
-
|
80
|
-
Semicolon:
|
81
|
-
Enabled: false
|
82
|
-
|
83
|
-
UnlessElse:
|
84
|
-
Enabled: false
|
85
|
-
|
86
|
-
BlockNesting:
|
87
|
-
Enabled: false
|
88
|
-
|
89
|
-
Proc:
|
90
|
-
Enabled: false
|
91
|
-
|
92
|
-
# Global vars should be removed
|
93
|
-
AvoidGlobalVars:
|
94
|
-
Enabled: false
|
95
|
-
|
96
|
-
# Probably some good ones in here.
|
97
|
-
# Disabled for $? => $CHILD_STATUS
|
98
|
-
AvoidPerlisms:
|
99
|
-
Enabled: false
|
100
|
-
|
101
|
-
Lambda:
|
102
|
-
Enabled: false
|
103
|
-
|
104
|
-
CollectionMethods:
|
105
|
-
Enabled: false
|
106
|
-
|
107
|
-
CaseIndentation:
|
108
|
-
Enabled: false
|
109
|
-
|
110
|
-
AllCops:
|
111
|
-
Excludes:
|
112
|
-
- vendor/**
|
23
|
+
Enabled: false
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-1.
|
1
|
+
ruby-2.1.6
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,32 @@
|
|
1
|
+
## V0.2.0
|
2
|
+
* Correct Rubocop ABC errors with refactoring
|
3
|
+
* RSpec tests for field with more underscores
|
4
|
+
* Change sort_direction attributes
|
5
|
+
* Change ruby version to 2.1.6
|
6
|
+
* Some minor cosmetic changes
|
7
|
+
* Refactoring model_additions
|
8
|
+
* Remove blank line
|
9
|
+
* Correct rubocop config errors
|
10
|
+
* handle date type with from and to field
|
11
|
+
* Rails4 turbolinks correction
|
12
|
+
* new version
|
13
|
+
* jquery added to engine
|
14
|
+
* change parameter names in hash
|
15
|
+
* change downcase to underscore on class name conversion
|
16
|
+
* convert array item code to string for compare to request param
|
17
|
+
* Handle boolean column type
|
18
|
+
* Remove debug message
|
19
|
+
|
20
|
+
## V0.1.1
|
21
|
+
* correct rubocop problems
|
22
|
+
|
23
|
+
## V0.1.0
|
24
|
+
* Syntax change after refactoring
|
25
|
+
* Refactoring view helper and views
|
26
|
+
* add table name to column name if it isn't specified
|
27
|
+
* Add comment for easy_filter model addition
|
28
|
+
* Changes added to changelog
|
29
|
+
|
1
30
|
## V0.0.4
|
2
31
|
|
3
32
|
* Added TravisCI
|
data/README.md
CHANGED
@@ -53,9 +53,9 @@ Code in helper:
|
|
53
53
|
```ruby
|
54
54
|
def model_statuses
|
55
55
|
[
|
56
|
-
{
|
57
|
-
{
|
58
|
-
{
|
56
|
+
{ value: 'A', text: 'Status A', color: :default},
|
57
|
+
{ value: 'B', text: 'Status B', color: :info},
|
58
|
+
{ value: 'C', text: 'Status C', color: :warning},
|
59
59
|
]
|
60
60
|
end
|
61
61
|
```
|
@@ -1,17 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
//= require jquery
|
2
|
+
//= require jquery-ui
|
3
|
+
|
4
|
+
if (typeof Turbolinks !== 'undefined') {
|
5
|
+
$(document).on("page:change", function () {
|
6
|
+
init_easy_filter();
|
7
|
+
});
|
8
|
+
} else {
|
9
|
+
$(document).ready(function() {
|
10
|
+
init_easy_filter();
|
8
11
|
});
|
9
|
-
}
|
12
|
+
}
|
10
13
|
|
11
|
-
|
12
|
-
$(
|
13
|
-
|
14
|
-
|
14
|
+
function init_easy_filter() {
|
15
|
+
$('ul.easy-filter-dropdown li a').click(function (e) {
|
16
|
+
html = $(this).html();
|
17
|
+
$(this).parents('ul.easy-filter-dropdown').prev().children().first().remove();
|
18
|
+
$(this).parents('ul.easy-filter-dropdown').prev().prepend(html);
|
19
|
+
$(this).parents('div.easy-filter-dropdown').removeClass('open')
|
20
|
+
$(this).parents('div.easy-filter-dropdown').find('input').first().val($(this).attr('data-target'));
|
21
|
+
});
|
22
|
+
$(".easy-filter-datepicker").datepicker($.datepicker.regional[ "hu" ]);
|
23
|
+
$(".easy-filter-datepicker").each(function() { $(this).val($(this).attr('value')); });
|
24
|
+
}
|
15
25
|
|
16
26
|
/* Hungarian initialisation for the jQuery UI date picker plugin. */
|
17
27
|
/* Written by Peter Kepes (https://github.com/kepes),
|
@@ -1,10 +1,10 @@
|
|
1
|
-
<div class="dropdown">
|
1
|
+
<div class="dropdown easy-filter-dropdown">
|
2
2
|
<%= hidden_field_tag("#{filter_prefixes[:main]}#{filter_prefixes[:exact]}#{filter[:field]}", request.params["#{filter_prefixes[:main]}#{filter_prefixes[:exact]}#{filter[:field]}"]) %>
|
3
3
|
<% button_text = "<span>#{filter[:label]}</span>" %>
|
4
4
|
|
5
5
|
<% filter[:items].each do |item|
|
6
|
-
if request.params["#{filter_prefixes[:main]}#{filter_prefixes[:exact]}#{filter[:field]}"] == item[:
|
7
|
-
button_text = "<span class=\"label label-#{item[:color]}\">#{item[:
|
6
|
+
if request.params["#{filter_prefixes[:main]}#{filter_prefixes[:exact]}#{filter[:field]}"] == item[:value].to_s
|
7
|
+
button_text = "<span class=\"label label-#{item[:color]}\">#{item[:text]}</span>"
|
8
8
|
break
|
9
9
|
end
|
10
10
|
end %>
|
@@ -12,9 +12,9 @@ end %>
|
|
12
12
|
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownFilterButton-<%= filter[:field] %>" data-toggle="dropdown"><%= button_text.html_safe %>
|
13
13
|
<span class="caret"></span></button>
|
14
14
|
|
15
|
-
<ul class="dropdown-menu dropdown-filter" aria-labelledby="dropdownFilterButton-<%= filter[:field] %>">
|
15
|
+
<ul class="dropdown-menu dropdown-filter easy-filter-dropdown" aria-labelledby="dropdownFilterButton-<%= filter[:field] %>">
|
16
16
|
<% filter[:items].each do |item| %>
|
17
|
-
<li role="presentation"><a role="menuitem" tabindex="-1" data-target="<%= item[:
|
17
|
+
<li role="presentation"><a role="menuitem" tabindex="-1" data-target="<%= item[:value] %>"><span class="label label-<%= item[:color]%>"><%= item[:text] %></span></a></li>
|
18
18
|
<% end %>
|
19
19
|
</ul>
|
20
20
|
</div>
|
@@ -1,2 +1,2 @@
|
|
1
|
-
<%= text_field_tag("#{filter_prefixes[:main]}#{filter_prefixes[:from]}#{filter[:field]}", request.params["#{filter_prefixes[:main]}#{filter_prefixes[:from]}#{filter[:field]}"], class: 'form-control datepicker', placeholder: filter[:label]) %>
|
2
|
-
<%= text_field_tag("#{filter_prefixes[:main]}#{filter_prefixes[:to]}#{filter[:field]}", request.params["#{filter_prefixes[:main]}#{filter_prefixes[:to]}#{filter[:field]}"], class: 'form-control datepicker', placeholder: filter[:label]) %>
|
1
|
+
<%= text_field_tag("#{filter_prefixes[:main]}#{filter_prefixes[:from]}#{filter[:field]}", request.params["#{filter_prefixes[:main]}#{filter_prefixes[:from]}#{filter[:field]}"], class: 'form-control easy-filter-datepicker', placeholder: filter[:label]) %>
|
2
|
+
<%= text_field_tag("#{filter_prefixes[:main]}#{filter_prefixes[:to]}#{filter[:field]}", request.params["#{filter_prefixes[:main]}#{filter_prefixes[:to]}#{filter[:field]}"], class: 'form-control easy-filter-datepicker', placeholder: filter[:label]) %>
|
data/easy_filter.gemspec
CHANGED
@@ -23,4 +23,6 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency 'rubocop'
|
24
24
|
spec.add_development_dependency 'activerecord', '~> 3.2'
|
25
25
|
spec.add_development_dependency 'sqlite3'
|
26
|
+
spec.add_runtime_dependency 'jquery-rails'
|
27
|
+
spec.add_runtime_dependency 'jquery-ui-rails'
|
26
28
|
end
|
data/lib/easy_filter/engine.rb
CHANGED
@@ -12,45 +12,70 @@ module EasyFilter
|
|
12
12
|
exact: 'exact_',
|
13
13
|
sort: 'sort',
|
14
14
|
direction: 'direction' })
|
15
|
-
|
16
|
-
params
|
17
|
-
|
15
|
+
params = assign_defaults params, prefixes
|
16
|
+
create_filter params, prefixes
|
17
|
+
end
|
18
18
|
|
19
|
-
|
20
|
-
filter = add_where(filter, field, value, prefixes)
|
21
|
-
end
|
19
|
+
private
|
22
20
|
|
21
|
+
def assign_defaults(params, prefixes)
|
23
22
|
params[prefixes[:sort]] ||= 'id'
|
24
23
|
params[prefixes[:direction]] ||= 'desc'
|
24
|
+
params
|
25
|
+
end
|
26
|
+
|
27
|
+
def create_filter(params, prefixes)
|
28
|
+
filter = self
|
29
|
+
params.each do |key, value|
|
30
|
+
if key.start_with?(prefixes[:main]) && !value.blank? && key != "#{prefixes[:main]}button"
|
31
|
+
filter = add_where(filter, key, value, prefixes)
|
32
|
+
end
|
33
|
+
end
|
25
34
|
|
26
|
-
sort_column = add_model params[prefixes[:sort]]
|
27
35
|
# TODO: included model fields not in 'column_names'. Somehow need to check if given column name valid
|
28
36
|
# sort_column = column_names.include?(params[prefixes[:sort]]) ? params[prefixes[:sort]] : add_model('id')
|
29
|
-
|
30
|
-
|
31
|
-
filter.order("#{sort_column} #{sort_direction}")
|
37
|
+
filter.order("#{add_model params[prefixes[:sort]]} #{sort_direction(params, prefixes)}")
|
32
38
|
end
|
33
39
|
|
34
|
-
|
40
|
+
def sort_direction(params, prefixes)
|
41
|
+
%w(asc desc).include?(params[prefixes[:direction]]) ? params[prefixes[:direction]] : 'desc'
|
42
|
+
end
|
35
43
|
|
36
44
|
def add_where(filter, field, value, prefixes)
|
37
|
-
|
38
|
-
|
45
|
+
f = prefixed? field, prefixes[:main]
|
46
|
+
return filter unless f
|
39
47
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
elsif field.start_with?(prefixes[:exact])
|
44
|
-
filter.where("#{add_model(del_prefix(field, prefixes[:exact]))} = ?", value)
|
48
|
+
f, op = get_operator f, prefixes
|
49
|
+
f = add_model f
|
45
50
|
|
51
|
+
if op.blank?
|
52
|
+
condition = "#{f} like ?"
|
53
|
+
value = "%#{value}%"
|
46
54
|
else
|
47
|
-
|
55
|
+
condition = "#{f} #{op}"
|
48
56
|
end
|
57
|
+
|
58
|
+
filter.where(condition, value)
|
49
59
|
end
|
50
60
|
|
51
|
-
def
|
52
|
-
return
|
53
|
-
|
61
|
+
def prefixed?(text, prefix)
|
62
|
+
return false unless text.start_with? prefix
|
63
|
+
text.sub(prefix, '')
|
64
|
+
end
|
65
|
+
|
66
|
+
def get_operator(field, prefixes)
|
67
|
+
operators = {
|
68
|
+
prefixes[:from] => '>= ?',
|
69
|
+
prefixes[:to] => '<= ?',
|
70
|
+
prefixes[:exact] => '= ?'
|
71
|
+
}
|
72
|
+
|
73
|
+
operators.each do |k, v|
|
74
|
+
f = prefixed? field, k
|
75
|
+
return f, v if f
|
76
|
+
end
|
77
|
+
|
78
|
+
[field, nil]
|
54
79
|
end
|
55
80
|
|
56
81
|
def add_model(field)
|
data/lib/easy_filter/version.rb
CHANGED
@@ -18,20 +18,7 @@ module EasyFilter
|
|
18
18
|
|
19
19
|
filters.each do |filter|
|
20
20
|
f = determine_column filter, model_class
|
21
|
-
form +=
|
22
|
-
|
23
|
-
case f[:col_type]
|
24
|
-
when :datetime
|
25
|
-
form += render_easy 'field_datetime', prefixes, f
|
26
|
-
|
27
|
-
when :array
|
28
|
-
form += render_easy 'field_array', prefixes, f
|
29
|
-
|
30
|
-
else
|
31
|
-
form += render_easy 'field_text', prefixes, f
|
32
|
-
end
|
33
|
-
|
34
|
-
form += render_easy 'form_field_close', prefixes
|
21
|
+
form += render_field f, prefixes
|
35
22
|
end
|
36
23
|
|
37
24
|
form += render_easy 'buttons', prefixes
|
@@ -40,25 +27,54 @@ module EasyFilter
|
|
40
27
|
|
41
28
|
private
|
42
29
|
|
30
|
+
def render_field(filter, prefixes)
|
31
|
+
form = render_easy 'form_field_open', prefixes
|
32
|
+
view = column_view filter[:col_type]
|
33
|
+
form += render_easy view, prefixes, filter
|
34
|
+
form + render_easy('form_field_close', prefixes)
|
35
|
+
end
|
36
|
+
|
37
|
+
def column_view(col_type)
|
38
|
+
views = {
|
39
|
+
datetime: 'field_datetime',
|
40
|
+
date: 'field_datetime',
|
41
|
+
array: 'field_array'
|
42
|
+
}
|
43
|
+
view = views[col_type]
|
44
|
+
view ||= 'field_text'
|
45
|
+
view
|
46
|
+
end
|
47
|
+
|
43
48
|
def determine_column(filter, model_class)
|
44
|
-
filter =
|
45
|
-
p "debug:"
|
46
|
-
p filter[:field]
|
47
|
-
filter[:field] = filter[:field].to_s
|
49
|
+
filter = check_filter_values filter, model_class
|
48
50
|
|
49
|
-
filter[:
|
51
|
+
if filter[:items].nil?
|
52
|
+
filter[:col_type] = column_type_from_model model_class, filter[:field]
|
53
|
+
filter = check_boolean filter
|
54
|
+
else
|
55
|
+
filter[:col_type] = :array
|
56
|
+
end
|
50
57
|
|
51
|
-
|
58
|
+
filter
|
59
|
+
end
|
60
|
+
|
61
|
+
def check_boolean(filter)
|
62
|
+
if filter[:col_type] == :boolean
|
63
|
+
filter[:items] = boolean_array
|
52
64
|
filter[:col_type] = :array
|
53
|
-
else
|
54
|
-
model_class.columns.each do |column|
|
55
|
-
if column.name == filter[:field]
|
56
|
-
filter[:col_type] = column.type
|
57
|
-
break
|
58
|
-
end
|
59
|
-
end
|
60
65
|
end
|
66
|
+
filter
|
67
|
+
end
|
61
68
|
|
69
|
+
def column_type_from_model(model_class, field)
|
70
|
+
model_class.columns.each { |column| return column.type if column.name == field }
|
71
|
+
nil
|
72
|
+
end
|
73
|
+
|
74
|
+
def check_filter_values(filter, model_class)
|
75
|
+
filter = { field: filter.to_s } if filter.is_a?(Symbol) || filter.is_a?(String)
|
76
|
+
filter[:field] = filter[:field].to_s
|
77
|
+
filter[:label] ||= t("activerecord.attributes.#{model_class.name.underscore}.#{filter[:field]}")
|
62
78
|
filter
|
63
79
|
end
|
64
80
|
|
@@ -67,5 +83,10 @@ module EasyFilter
|
|
67
83
|
locals: { filter_prefixes: prefixes,
|
68
84
|
filter: filter }
|
69
85
|
end
|
86
|
+
|
87
|
+
def boolean_array
|
88
|
+
[{ value: 1, text: t(:yes), color: :success, icon: 'check' },
|
89
|
+
{ value: 0, text: t(:no), color: :danger, icon: 'remove' }]
|
90
|
+
end
|
70
91
|
end
|
71
92
|
end
|
@@ -11,6 +11,7 @@ class CreateUsersTable < ActiveRecord::Migration
|
|
11
11
|
create_table :users do |t|
|
12
12
|
t.string :name
|
13
13
|
t.string :born
|
14
|
+
t.string :field_with_underscore
|
14
15
|
end
|
15
16
|
puts 'Users created'
|
16
17
|
end
|
@@ -28,10 +29,10 @@ end
|
|
28
29
|
describe EasyFilter::ModelAdditions do
|
29
30
|
before(:all) do
|
30
31
|
CreateUsersTable.migrate(:up)
|
31
|
-
User.create!(id: 1, name: 'aaaa aaaa', born: '2001.01.01')
|
32
|
-
User.create!(id: 2, name: 'aaaa bbbb', born: '2002.01.01')
|
33
|
-
User.create!(id: 3, name: 'bbbb bbbb', born: '2003.01.01')
|
34
|
-
User.create!(id: 4, name: 'aaaa cccc', born: '2004.01.01')
|
32
|
+
User.create!(id: 1, name: 'aaaa aaaa', born: '2001.01.01', field_with_underscore: 'aaaa')
|
33
|
+
User.create!(id: 2, name: 'aaaa bbbb', born: '2002.01.01', field_with_underscore: 'aaaa')
|
34
|
+
User.create!(id: 3, name: 'bbbb bbbb', born: '2003.01.01', field_with_underscore: 'bbbb')
|
35
|
+
User.create!(id: 4, name: 'aaaa cccc', born: '2004.01.01', field_with_underscore: 'aaaa')
|
35
36
|
end
|
36
37
|
|
37
38
|
after(:all) do
|
@@ -72,6 +73,14 @@ describe EasyFilter::ModelAdditions do
|
|
72
73
|
expect(users.count).to eq(2)
|
73
74
|
end
|
74
75
|
|
76
|
+
it 'should filter by first_name' do
|
77
|
+
users = User.scoped.easy_filter('filter_field_with_underscore' => 'aa')
|
78
|
+
expect(users.count).to eq(3)
|
79
|
+
|
80
|
+
users = User.scoped.easy_filter('filter_field_with_underscore' => 'bb')
|
81
|
+
expect(users.count).to eq(1)
|
82
|
+
end
|
83
|
+
|
75
84
|
it 'should exact filter by id' do
|
76
85
|
users = User.scoped.easy_filter('filter_exact_id' => '1')
|
77
86
|
expect(users.count).to eq(1)
|
@@ -94,6 +103,5 @@ describe EasyFilter::ModelAdditions do
|
|
94
103
|
|
95
104
|
users = User.scoped.easy_filter('filter_to_born' => '2003.01.01')
|
96
105
|
expect(users.count).to eq(3)
|
97
|
-
|
98
106
|
end
|
99
107
|
end
|
metadata
CHANGED
@@ -1,97 +1,125 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_filter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Kepes
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rubocop
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: activerecord
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '3.2'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3.2'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: sqlite3
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: jquery-rails
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: jquery-ui-rails
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: '0'
|
97
125
|
description: Filter and sort ActiveRecord model for Rails app with Bootstrap view
|
@@ -102,12 +130,12 @@ executables: []
|
|
102
130
|
extensions: []
|
103
131
|
extra_rdoc_files: []
|
104
132
|
files:
|
105
|
-
- .gitignore
|
106
|
-
- .rspec
|
107
|
-
- .rubocop.yml
|
108
|
-
- .ruby-gemset
|
109
|
-
- .ruby-version
|
110
|
-
- .travis.yml
|
133
|
+
- ".gitignore"
|
134
|
+
- ".rspec"
|
135
|
+
- ".rubocop.yml"
|
136
|
+
- ".ruby-gemset"
|
137
|
+
- ".ruby-version"
|
138
|
+
- ".travis.yml"
|
111
139
|
- CHANGELOG.md
|
112
140
|
- Gemfile
|
113
141
|
- LICENSE.txt
|
@@ -143,12 +171,12 @@ require_paths:
|
|
143
171
|
- lib
|
144
172
|
required_ruby_version: !ruby/object:Gem::Requirement
|
145
173
|
requirements:
|
146
|
-
- -
|
174
|
+
- - ">="
|
147
175
|
- !ruby/object:Gem::Version
|
148
176
|
version: '0'
|
149
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
178
|
requirements:
|
151
|
-
- -
|
179
|
+
- - ">="
|
152
180
|
- !ruby/object:Gem::Version
|
153
181
|
version: '0'
|
154
182
|
requirements: []
|