awesome_sort 0.3.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9485b53990fb0439d32188a7f376efbd0cf7dc735f4ef01d369495e9af602667
4
- data.tar.gz: dfc66e05ea62d66225dec8aed090edef4b01e60563a85d0b3a2260abfe031b2e
3
+ metadata.gz: f16f10faaf8520c88bfde7de255d7cc672b817a46a0063121b17ae499dcceab9
4
+ data.tar.gz: c75a91203b168d52c8f9a79057913ee6f27ffbe08d0bf6c64c0fb7cabfa583bf
5
5
  SHA512:
6
- metadata.gz: 4cbdb4084601236beb0897e4b5b4c7a8d54a95e3cca3d8a48708656c01539822d981e834ebda1adcc8cd661e45c1756d71a67d4e36d52d691993e17b39353c87
7
- data.tar.gz: cd2fe41617d2502a8909ce375d3b0ef883626caa875a393bacb88728bbd31ba081a1b4594da39fb14b277dec4a0ebf82a1e5684a3dd85e29060b705c23730659
6
+ metadata.gz: 370930407f65a4f177c3904d30ec42435539581862eb91db817032064e978f493402ebac1374b2a981ce145bfff915b19d604b0003e1b21a6259e825bd78ae37
7
+ data.tar.gz: 10e113696d830db57611c007c9b7f034bd330c52d1a7c66bc912233a4190861ff68c7ce6f6d3fe33ff7a94a4e03c414023fd0536c6a251662f7e6ffdcc57e326
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ Gemfile.lock
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
- if ($(this).hasClass('order-asc')) {
24
- var link = window.location.pathname + '?sort_by=' + $(this).data('order-term') + '&sort_order=desc' + window.location.hash
25
- } else {
26
- var link = window.location.pathname + '?sort_by=' + $(this).data('order-term') + '&sort_order=asc' + window.location.hash
27
- }
28
- $(this).wrapInner($('<a/>').attr('href', link));
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 = {"source_code_url" => "https://github.com/meritec/awesome_sort"}
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.1"
28
- spec.add_runtime_dependency "activesupport", ">= 3.2", "< 6.1"
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"
@@ -1,3 +1,3 @@
1
1
  module AwesomeSort
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.2"
3
3
  end
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.3.1
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: 2019-06-12 00:00:00.000000000 Z
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.1'
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.1'
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.1'
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.1'
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
- source_code_url: https://github.com/meritec/awesome_sort
126
- post_install_message:
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
- rubyforge_project:
142
- rubygems_version: 2.7.7
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