awesome_sort 0.3.1 → 0.4.2
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/.gitignore +1 -0
- data/README.md +15 -0
- data/app/assets/javascripts/awesome_sort.js +22 -6
- data/app/helpers/awesome_sort/awesome_sort_helper.rb +11 -1
- data/awesome_sort.gemspec +7 -5
- data/lib/awesome_sort/version.rb +1 -1
- metadata +13 -14
- data/Gemfile.lock +0 -73
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f16f10faaf8520c88bfde7de255d7cc672b817a46a0063121b17ae499dcceab9
|
4
|
+
data.tar.gz: c75a91203b168d52c8f9a79057913ee6f27ffbe08d0bf6c64c0fb7cabfa583bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 370930407f65a4f177c3904d30ec42435539581862eb91db817032064e978f493402ebac1374b2a981ce145bfff915b19d604b0003e1b21a6259e825bd78ae37
|
7
|
+
data.tar.gz: 10e113696d830db57611c007c9b7f034bd330c52d1a7c66bc912233a4190861ff68c7ce6f6d3fe33ff7a94a4e03c414023fd0536c6a251662f7e6ffdcc57e326
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -40,6 +40,21 @@ AwesomeSort.configure do |config|
|
|
40
40
|
end
|
41
41
|
```
|
42
42
|
|
43
|
+
In the view, when creating columns for the table, use the following syntax:
|
44
|
+
```ruby
|
45
|
+
<%= column_sort(
|
46
|
+
column_name: "title",
|
47
|
+
width: "10%",
|
48
|
+
link_name: "Title",
|
49
|
+
controller_name: "contact_index",
|
50
|
+
extra: { search: @search }) %>
|
51
|
+
```
|
52
|
+
where: <br />
|
53
|
+
"column_name" will be the name of your db column <br />
|
54
|
+
"width" will be your column width <br />
|
55
|
+
"link_name" will be the name of the column displayed as a link <br />
|
56
|
+
"controller_name" will be the controller name for logic <br />
|
57
|
+
"extra" pass in there extra parameters <br />
|
43
58
|
|
44
59
|
## Development
|
45
60
|
|
@@ -20,11 +20,27 @@ function orderable() {
|
|
20
20
|
}
|
21
21
|
|
22
22
|
$(".orderable").each(function() {
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
var url = new URL(window.location)
|
24
|
+
url.searchParams.append('sort_by', $(this).data('order-term'))
|
25
|
+
url.searchParams.append('sort_order', $(this).hasClass('order-asc') ? 'desc' : 'asc')
|
26
|
+
|
27
|
+
var element = $(this).has('> a').length ? $(this).children('a') : $(this).wrapInner($('<a/>'))
|
28
|
+
element.attr('href', url.toString());
|
29
29
|
});
|
30
30
|
};
|
31
|
+
|
32
|
+
function fireEvent(event) {
|
33
|
+
var e = new Event(event)
|
34
|
+
window.dispatchEvent(e)
|
35
|
+
}
|
36
|
+
|
37
|
+
// Have to manually fire event when history is updated (url changes)
|
38
|
+
var _pushState = history.pushState;
|
39
|
+
history.pushState = function() {
|
40
|
+
_pushState.apply(history, arguments);
|
41
|
+
fireEvent('pushState');
|
42
|
+
};
|
43
|
+
|
44
|
+
window.addEventListener('pushState', function() {
|
45
|
+
orderable()
|
46
|
+
})
|
@@ -1,5 +1,14 @@
|
|
1
1
|
module AwesomeSort
|
2
2
|
module AwesomeSortHelper
|
3
|
+
ALLOWED_SORT_ORDERS = [
|
4
|
+
'asc',
|
5
|
+
'desc',
|
6
|
+
'ASC',
|
7
|
+
'DESC',
|
8
|
+
:asc,
|
9
|
+
:desc,
|
10
|
+
]
|
11
|
+
|
3
12
|
def column_sort(args = {})
|
4
13
|
args[:extra] ||= {}
|
5
14
|
# Should pass it column_name, link_name, controller_name and
|
@@ -19,7 +28,7 @@ module AwesomeSort
|
|
19
28
|
else
|
20
29
|
"asc"
|
21
30
|
end
|
22
|
-
content_tag(:th, width: args[:width], class: klass) do
|
31
|
+
content_tag(:th, width: args[:width], class: klass, data: { order_term: args[:column_name] }) do
|
23
32
|
link_to(
|
24
33
|
args[:link_name],
|
25
34
|
public_send(c_method, { sort_order: sort_order, sort_by: args[:column_name] }.merge(args[:extra])),
|
@@ -30,6 +39,7 @@ module AwesomeSort
|
|
30
39
|
|
31
40
|
def sort(scope, sort_by, sort_order)
|
32
41
|
klass = scope.model.name.tableize.to_sym
|
42
|
+
sort_order = (ALLOWED_SORT_ORDERS & [sort_order]).first || 'asc'
|
33
43
|
|
34
44
|
if sort_by
|
35
45
|
if sorter = AwesomeSort.sorters[klass][sort_by.to_sym]
|
data/awesome_sort.gemspec
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
lib = File.expand_path("../lib", __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require "awesome_sort/version"
|
@@ -11,9 +10,12 @@ Gem::Specification.new do |spec|
|
|
11
10
|
|
12
11
|
spec.summary = %q{Responsive sortable table}
|
13
12
|
spec.description = %q{This gem should make the creation of responsive sortable tables much easier.}
|
14
|
-
spec.homepage = "https://cpoms.co.uk"
|
13
|
+
spec.homepage = "https://www.cpoms.co.uk"
|
15
14
|
spec.license = "MIT"
|
16
|
-
spec.metadata = {
|
15
|
+
spec.metadata = {
|
16
|
+
"source_code_uri" => "https://github.com/cpoms/awesome_sort",
|
17
|
+
"documentation_uri" => "https://github.com/cpoms/awesome_sort"
|
18
|
+
}
|
17
19
|
|
18
20
|
# Specify which files should be added to the gem when it is released.
|
19
21
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -24,8 +26,8 @@ Gem::Specification.new do |spec|
|
|
24
26
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
27
|
spec.require_paths = ["lib"]
|
26
28
|
|
27
|
-
spec.add_runtime_dependency "railties", ">= 3.2", "< 6.
|
28
|
-
spec.add_runtime_dependency "activesupport", ">= 3.2", "< 6.
|
29
|
+
spec.add_runtime_dependency "railties", ">= 3.2", "< 6.2"
|
30
|
+
spec.add_runtime_dependency "activesupport", ">= 3.2", "< 6.2"
|
29
31
|
|
30
32
|
spec.add_development_dependency "bundler"
|
31
33
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/lib/awesome_sort/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awesome_sort
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrei Diaconu
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '3.2'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '6.
|
22
|
+
version: '6.2'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '3.2'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '6.
|
32
|
+
version: '6.2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: activesupport
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
version: '3.2'
|
40
40
|
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '6.
|
42
|
+
version: '6.2'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -49,7 +49,7 @@ dependencies:
|
|
49
49
|
version: '3.2'
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '6.
|
52
|
+
version: '6.2'
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: bundler
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,7 +104,6 @@ files:
|
|
104
104
|
- ".travis.yml"
|
105
105
|
- CODE_OF_CONDUCT.md
|
106
106
|
- Gemfile
|
107
|
-
- Gemfile.lock
|
108
107
|
- LICENSE.txt
|
109
108
|
- README.md
|
110
109
|
- Rakefile
|
@@ -118,12 +117,13 @@ files:
|
|
118
117
|
- lib/awesome_sort.rb
|
119
118
|
- lib/awesome_sort/engine.rb
|
120
119
|
- lib/awesome_sort/version.rb
|
121
|
-
homepage: https://cpoms.co.uk
|
120
|
+
homepage: https://www.cpoms.co.uk
|
122
121
|
licenses:
|
123
122
|
- MIT
|
124
123
|
metadata:
|
125
|
-
|
126
|
-
|
124
|
+
source_code_uri: https://github.com/cpoms/awesome_sort
|
125
|
+
documentation_uri: https://github.com/cpoms/awesome_sort
|
126
|
+
post_install_message:
|
127
127
|
rdoc_options: []
|
128
128
|
require_paths:
|
129
129
|
- lib
|
@@ -138,9 +138,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '0'
|
140
140
|
requirements: []
|
141
|
-
|
142
|
-
|
143
|
-
signing_key:
|
141
|
+
rubygems_version: 3.1.4
|
142
|
+
signing_key:
|
144
143
|
specification_version: 4
|
145
144
|
summary: Responsive sortable table
|
146
145
|
test_files: []
|
data/Gemfile.lock
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
awesome_sort (0.2.0)
|
5
|
-
activesupport (>= 3.2, < 6.1)
|
6
|
-
railties (>= 3.2, < 6.1)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: https://rubygems.org/
|
10
|
-
specs:
|
11
|
-
actionpack (5.2.3)
|
12
|
-
actionview (= 5.2.3)
|
13
|
-
activesupport (= 5.2.3)
|
14
|
-
rack (~> 2.0)
|
15
|
-
rack-test (>= 0.6.3)
|
16
|
-
rails-dom-testing (~> 2.0)
|
17
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
18
|
-
actionview (5.2.3)
|
19
|
-
activesupport (= 5.2.3)
|
20
|
-
builder (~> 3.1)
|
21
|
-
erubi (~> 1.4)
|
22
|
-
rails-dom-testing (~> 2.0)
|
23
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
24
|
-
activesupport (5.2.3)
|
25
|
-
concurrent-ruby (~> 1.0, >= 1.0.2)
|
26
|
-
i18n (>= 0.7, < 2)
|
27
|
-
minitest (~> 5.1)
|
28
|
-
tzinfo (~> 1.1)
|
29
|
-
builder (3.2.3)
|
30
|
-
concurrent-ruby (1.1.5)
|
31
|
-
crass (1.0.4)
|
32
|
-
erubi (1.8.0)
|
33
|
-
i18n (1.6.0)
|
34
|
-
concurrent-ruby (~> 1.0)
|
35
|
-
loofah (2.2.3)
|
36
|
-
crass (~> 1.0.2)
|
37
|
-
nokogiri (>= 1.5.9)
|
38
|
-
method_source (0.9.2)
|
39
|
-
mini_portile2 (2.4.0)
|
40
|
-
minitest (5.11.3)
|
41
|
-
nokogiri (1.10.3)
|
42
|
-
mini_portile2 (~> 2.4.0)
|
43
|
-
rack (2.0.7)
|
44
|
-
rack-test (1.1.0)
|
45
|
-
rack (>= 1.0, < 3)
|
46
|
-
rails-dom-testing (2.0.3)
|
47
|
-
activesupport (>= 4.2.0)
|
48
|
-
nokogiri (>= 1.6)
|
49
|
-
rails-html-sanitizer (1.0.4)
|
50
|
-
loofah (~> 2.2, >= 2.2.2)
|
51
|
-
railties (5.2.3)
|
52
|
-
actionpack (= 5.2.3)
|
53
|
-
activesupport (= 5.2.3)
|
54
|
-
method_source
|
55
|
-
rake (>= 0.8.7)
|
56
|
-
thor (>= 0.19.0, < 2.0)
|
57
|
-
rake (10.5.0)
|
58
|
-
thor (0.20.3)
|
59
|
-
thread_safe (0.3.6)
|
60
|
-
tzinfo (1.2.5)
|
61
|
-
thread_safe (~> 0.1)
|
62
|
-
|
63
|
-
PLATFORMS
|
64
|
-
ruby
|
65
|
-
|
66
|
-
DEPENDENCIES
|
67
|
-
awesome_sort!
|
68
|
-
bundler
|
69
|
-
minitest (~> 5.0)
|
70
|
-
rake (~> 10.0)
|
71
|
-
|
72
|
-
BUNDLED WITH
|
73
|
-
2.0.1
|