sortofil 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/concerns/sortofilterable.rb +40 -42
- data/app/controllers/concerns/url_restorable.rb +26 -29
- data/lib/sortofil/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d4641eae47c9f53c7d10a7418c05d561397b26d
|
4
|
+
data.tar.gz: 2281c2722d8f7df61449a4147c7bab48c7c367fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9dc7235589e180504915cb7e6bad41d5242026f6dd9bdb7399e205d18741f8101bc61597bb79a60b5bea8ad0fbe97f384c244bb5a8f52ee262a2b24ff7791d27
|
7
|
+
data.tar.gz: ad9725c04597ad954bbd920f25f5f184874f42faee159e3c5f0d253681aab00780d8885911ef52db7ab94ee32968825cc52a929d8775f039305247a4472ba047
|
@@ -2,47 +2,45 @@
|
|
2
2
|
module Sortofilterable
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
pagination_params)
|
46
|
-
end
|
5
|
+
private
|
6
|
+
|
7
|
+
def filter_params
|
8
|
+
[]
|
9
|
+
end
|
10
|
+
|
11
|
+
def sort_params
|
12
|
+
%i[sort_by direction]
|
13
|
+
end
|
14
|
+
|
15
|
+
def pagination_params
|
16
|
+
%i[page]
|
17
|
+
end
|
18
|
+
|
19
|
+
def set_default_sort_opts
|
20
|
+
set_default_sort_field
|
21
|
+
set_default_sort_direction
|
22
|
+
end
|
23
|
+
|
24
|
+
def set_default_sort_field
|
25
|
+
@default_sort_field = { nil => :id }
|
26
|
+
end
|
27
|
+
|
28
|
+
def set_default_sort_direction
|
29
|
+
@default_sort_direction = { nil => :asc }
|
30
|
+
end
|
31
|
+
|
32
|
+
def sort_field(scope = nil)
|
33
|
+
params.dig(scope, :sort_by) || params[:sort_by] ||
|
34
|
+
@default_sort_field[scope]
|
35
|
+
end
|
36
|
+
|
37
|
+
def sort_direction(scope = nil)
|
38
|
+
params.dig(scope, :direction) || params[:direction] ||
|
39
|
+
@default_sort_direction[scope]
|
40
|
+
end
|
41
|
+
|
42
|
+
def permit_params
|
43
|
+
@permitted_params = params.permit(sort_params, filter_params,
|
44
|
+
pagination_params)
|
47
45
|
end
|
48
46
|
end
|
@@ -2,42 +2,39 @@
|
|
2
2
|
module UrlRestorable
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
-
|
6
|
-
private
|
5
|
+
private
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
7
|
+
def restore_url_params(key_prefix)
|
8
|
+
key = "#{key_prefix}_url_params"
|
9
|
+
if @permitted_params
|
10
|
+
params_wo_paging = @permitted_params.reject do |k, _|
|
11
|
+
pagination_params.include?(k.to_sym)
|
14
12
|
end
|
15
|
-
|
16
|
-
|
13
|
+
end
|
14
|
+
all_params = params_wo_paging || params.permit(filter_params + sort_params)
|
17
15
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
25
|
-
elsif session[key].blank?
|
26
|
-
session[key] = all_params.to_h.to_query
|
16
|
+
if params[:reset_url]
|
17
|
+
if params[:reset_url] == 'all'
|
18
|
+
session[key] = nil
|
19
|
+
else
|
20
|
+
session[key] = Rack::Utils.parse_nested_query(session[key])
|
21
|
+
.except(params[:reset_url]).to_query
|
27
22
|
end
|
23
|
+
elsif session[key].blank?
|
24
|
+
session[key] = all_params.to_h.to_query
|
25
|
+
end
|
28
26
|
|
29
|
-
|
27
|
+
return if session[key].blank?
|
30
28
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
29
|
+
new_params = Rack::Utils.parse_nested_query(session[key])
|
30
|
+
.merge(deep_transform(all_params.to_h))
|
31
|
+
session[key] = new_params.to_query
|
32
|
+
params.merge!(new_params)
|
33
|
+
end
|
36
34
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
end
|
35
|
+
def deep_transform(hash)
|
36
|
+
hash.transform_values do |val|
|
37
|
+
val.is_a?(String) ? val : val.transform_values { |vv| vv }
|
41
38
|
end
|
42
39
|
end
|
43
40
|
end
|
data/lib/sortofil/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sortofil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rinat Garifullin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|