sort_n_params 1.2.2 → 1.2.3
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/Gemfile +4 -2
- data/Rakefile +5 -3
- data/lib/sort_n_params/concerns/scopes.rb +2 -0
- data/lib/sort_n_params/sort_helpers.rb +24 -10
- data/lib/sort_n_params/sortable.rb +26 -7
- data/lib/sort_n_params.rb +3 -1
- data/sort_n_params.gemspec +11 -6
- data/spec/concerns/scopes_spec.rb +19 -13
- data/spec/sortable_spec.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- metadata +48 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5546d17da19b3cfb15a26cb4cd14fc684545af3f743ea175d28947b0511f9758
|
4
|
+
data.tar.gz: 449f77325f1afb0e71ba03276bb07d095e9d00348882d50c69788e4c4902685d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 350e519cb57c72ba5b7541f8802bba8436a57905b8adb2c293c09d1892c50e23c646a5280f1469a0c5b56e34929bc9c745d5c08a348224c95ff588d526691afc
|
7
|
+
data.tar.gz: 0a314e2fcdc8998dfe14fa42ceead8114474f5dccf101112bc7243d265ba56d3f22dd2f8b6e6f00d0111fa90b8d3281e3eeb8e6dd7d653abec71f9976d596ea3
|
data/Gemfile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
4
6
|
|
5
7
|
# Specify your gem's dependencies in invoice_client.gemspec
|
6
8
|
gemspec
|
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SortNParams
|
2
4
|
module SortHelpers
|
3
5
|
def sortable(column, title = nil)
|
@@ -6,17 +8,29 @@ module SortNParams
|
|
6
8
|
concat(
|
7
9
|
link_to(data.title, data.sort_params, class: data.css)
|
8
10
|
)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
) if data.position.present?
|
14
|
-
concat(
|
15
|
-
link_to(data.clear_params, class: SortNParams.badge_secondary_class) do
|
16
|
-
"<i class='#{SortNParams.sort_clear_class}'></i>".html_safe
|
17
|
-
end
|
18
|
-
) if data.clear_params.present?
|
11
|
+
|
12
|
+
concat_position(data) if data.position.present?
|
13
|
+
|
14
|
+
concat_clear_params(data) if data.clear_params.present?
|
19
15
|
end
|
20
16
|
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def concat_position(data)
|
21
|
+
concat(
|
22
|
+
link_to(data.sort_params, class: SortNParams.badge_main_class) do
|
23
|
+
"<b>#{data.position}</b><i class='#{data.icon}'></i>".html_safe
|
24
|
+
end
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
def concat_clear_params(data)
|
29
|
+
concat(
|
30
|
+
link_to(data.clear_params, class: SortNParams.badge_secondary_class) do
|
31
|
+
"<i class='#{SortNParams.sort_clear_class}'></i>".html_safe
|
32
|
+
end
|
33
|
+
)
|
34
|
+
end
|
21
35
|
end
|
22
36
|
end
|
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'ostruct'
|
2
4
|
require 'sort_n_params'
|
3
5
|
|
4
6
|
class Sortable
|
5
|
-
DEFAULT_ORDER = 'asc'
|
7
|
+
DEFAULT_ORDER = 'asc'
|
6
8
|
|
7
9
|
def initialize(column, title, params)
|
8
10
|
@column = column
|
@@ -34,13 +36,18 @@ class Sortable
|
|
34
36
|
end
|
35
37
|
|
36
38
|
def build_data
|
37
|
-
OpenStruct.new(css: set_css, icon: set_icon, title: @title, position: @column_position, sort_params: @sort_params,
|
39
|
+
OpenStruct.new(css: set_css, icon: set_icon, title: @title, position: @column_position, sort_params: @sort_params,
|
40
|
+
clear_params: @clear_params)
|
38
41
|
end
|
39
42
|
|
40
43
|
def revert_order
|
41
44
|
column_index = @sort_params[:order].find_index(@column)
|
42
|
-
direction = @column == @sort_params[:order].detect { |e| e == @column } &&
|
43
|
-
|
45
|
+
direction = if @column == @sort_params[:order].detect { |e| e == @column } &&
|
46
|
+
@sort_params[:order][column_index + 1] == 'asc'
|
47
|
+
'desc'
|
48
|
+
else
|
49
|
+
'asc'
|
50
|
+
end
|
44
51
|
@sort_params[:order][column_index + 1] = direction
|
45
52
|
end
|
46
53
|
|
@@ -51,7 +58,7 @@ class Sortable
|
|
51
58
|
|
52
59
|
def set_clear_params
|
53
60
|
column_index = @clear_params[:order].find_index(@column)
|
54
|
-
2.times{|
|
61
|
+
2.times { |_x| @clear_params[:order].delete_at(column_index) }
|
55
62
|
end
|
56
63
|
|
57
64
|
def reset_clear_params
|
@@ -69,8 +76,20 @@ class Sortable
|
|
69
76
|
end
|
70
77
|
|
71
78
|
def set_icon
|
72
|
-
|
73
|
-
|
79
|
+
return unless order_param_exists?
|
80
|
+
|
81
|
+
if @column == order_column && @params[:order][ @params[:order].find_index(@column) + 1 ] == 'asc'
|
82
|
+
SortNParams.sort_asc_class
|
83
|
+
else
|
84
|
+
SortNParams.sort_desc_class
|
74
85
|
end
|
75
86
|
end
|
87
|
+
|
88
|
+
def order_param_exists?
|
89
|
+
@params[:order] && @column == order_column && @params[:order][ @params[:order].find_index(@column) + 1 ]
|
90
|
+
end
|
91
|
+
|
92
|
+
def order_column
|
93
|
+
@params[:order].detect { |e| e == @column }
|
94
|
+
end
|
76
95
|
end
|
data/lib/sort_n_params.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'sort_n_params/sort_helpers'
|
2
4
|
require 'sort_n_params/sortable'
|
3
5
|
require 'rails/engine'
|
@@ -16,7 +18,7 @@ module SortNParams
|
|
16
18
|
|
17
19
|
initializer 'sort_n_params.initialize' do |_app|
|
18
20
|
ActiveSupport.on_load :action_view do
|
19
|
-
ActionView::Base.
|
21
|
+
ActionView::Base.include SortNParams::SortHelpers
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
data/sort_n_params.gemspec
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
Gem::Specification.new do |s|
|
2
4
|
s.name = 'sort_n_params'
|
3
|
-
s.version = '1.2.
|
4
|
-
s.date = '2022-06-
|
5
|
+
s.version = '1.2.3'
|
6
|
+
s.date = '2022-06-22'
|
5
7
|
s.summary = 'Sort N Params'
|
6
8
|
s.description = 'Make your html <tables> sortables with N <th> parameters this gem.'
|
7
9
|
s.authors = ['Juan Francisco Ferrari']
|
@@ -23,15 +25,18 @@ Gem::Specification.new do |s|
|
|
23
25
|
s.homepage =
|
24
26
|
'https://github.com/JuannFerrari/sort_n_params'
|
25
27
|
s.license = 'MIT'
|
26
|
-
s.required_ruby_version = Gem::Requirement.new(
|
28
|
+
s.required_ruby_version = Gem::Requirement.new('>= 2.6.0')
|
27
29
|
|
28
30
|
s.add_development_dependency 'bundler'
|
29
31
|
s.add_development_dependency 'factory_bot', '~> 4.0'
|
32
|
+
s.add_development_dependency 'pry', '~> 0.13.1'
|
30
33
|
s.add_development_dependency 'pry-byebug'
|
31
34
|
s.add_development_dependency 'rake', '>= 12.3.3'
|
32
35
|
s.add_development_dependency 'rspec', '~> 3.0'
|
36
|
+
s.add_development_dependency 'rubocop', '~> 1.30'
|
37
|
+
s.add_development_dependency 'rubocop-rails'
|
33
38
|
|
34
|
-
s.add_dependency('
|
35
|
-
s.add_dependency('
|
36
|
-
s.add_dependency('rake'
|
39
|
+
s.add_dependency('nokogiri', ['>= 0'])
|
40
|
+
s.add_dependency('rails', ['>= 7.0'])
|
41
|
+
s.add_dependency('rake', ['>= 12.3.3'])
|
37
42
|
end
|
@@ -1,25 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'sort_n_params/concerns/scopes'
|
2
4
|
|
5
|
+
CustomTable = Struct.new(:custom_field) do
|
6
|
+
include SortNParams::Scopes
|
7
|
+
end
|
8
|
+
|
3
9
|
RSpec.describe SortNParams::Scopes do
|
4
10
|
let(:test_class) do
|
5
|
-
CustomTable
|
6
|
-
include SortNParams::Scopes
|
7
|
-
end
|
11
|
+
CustomTable
|
8
12
|
end
|
9
13
|
|
10
|
-
|
11
|
-
|
14
|
+
describe '#parse_array' do
|
15
|
+
context 'when you pass only an ordering array' do
|
16
|
+
subject { test_class.parse_array(%w[test_field asc]) }
|
12
17
|
|
13
|
-
|
14
|
-
|
18
|
+
it 'builds the array correctly without the table_name param passed' do
|
19
|
+
expect(subject).to eq('custom_tables.test_field asc')
|
20
|
+
end
|
15
21
|
end
|
16
|
-
end
|
17
22
|
|
18
|
-
|
19
|
-
|
23
|
+
context 'when you pass both ordering array and table name' do
|
24
|
+
subject { test_class.parse_array(%w[test_field asc], 'another_table_name') }
|
20
25
|
|
21
|
-
|
22
|
-
|
26
|
+
it 'builds the array correctly with the table_name param passed' do
|
27
|
+
expect(subject).to eq('another_table_name.test_field asc')
|
28
|
+
end
|
23
29
|
end
|
24
30
|
end
|
25
|
-
end
|
31
|
+
end
|
data/spec/sortable_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sort_n_params
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Francisco Ferrari
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-06-
|
11
|
+
date: 2022-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '4.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.13.1
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.13.1
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: pry-byebug
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,19 +95,33 @@ dependencies:
|
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '3.0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: rubocop
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.30'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.30'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop-rails
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
115
|
- - ">="
|
88
116
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
90
|
-
type: :
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
122
|
- - ">="
|
95
123
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
124
|
+
version: '0'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
126
|
name: nokogiri
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +136,20 @@ dependencies:
|
|
108
136
|
- - ">="
|
109
137
|
- !ruby/object:Gem::Version
|
110
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rails
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '7.0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '7.0'
|
111
153
|
- !ruby/object:Gem::Dependency
|
112
154
|
name: rake
|
113
155
|
requirement: !ruby/object:Gem::Requirement
|