sortofil 0.1.3 → 0.1.4
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 +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
|