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 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