sortable_by 1.0 → 1.0.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
- SHA1:
3
- metadata.gz: b73a5ddc646d2e3c337439264cb4ca123aa3e30e
4
- data.tar.gz: 5790ac2d41f873ebaffe8e2a20a7329ee667f180
2
+ SHA256:
3
+ metadata.gz: 57aec93c545980e73c92b7135b14d161981ea29d0760ee3aab3317bd6ada0bdd
4
+ data.tar.gz: 632442d5cc37d21280d95da6a09a66966ca7d8329a73ba8dce4790c01dd1f444
5
5
  SHA512:
6
- metadata.gz: fd6f579e3c5b90e976c23be7f5c03192d5fa816e1dbf7ee466d7df1ea02b13ab3eae36275fec8b6fa2278c791c68b16511f706ac36a0105415f2c62e12317d02
7
- data.tar.gz: ec9f53443ec60403476953b6f8beabf3982ea7342f5134adf725f1ce3c247d07ce4af80fdb29379308fc22470022676ba6f007f2a4f4a93385bd526247b504cb
6
+ metadata.gz: df35102a578b4b0331642f68f06c07940b746a159d51a3af851142ae2b5f6aa5b77bd3b88e9ebdf783c4c9af75ee1cf04e4e72817a059b9f9535d2bdc1262f6f
7
+ data.tar.gz: bd1d63ab89b77020d5c376bc6ea78d6cd674477731ec0866bc7d624e60bb428c6983e1f6659e2c371339b3adf89b3c73185b60df7ccadf94cb5a50090360bd6f
data/Rakefile CHANGED
@@ -14,7 +14,7 @@ RDoc::Task.new(:rdoc) do |rdoc|
14
14
  rdoc.rdoc_files.include('lib/**/*.rb')
15
15
  end
16
16
 
17
- APP_RAKEFILE = File.expand_path('../spec/dummy/Rakefile', __FILE__)
17
+ APP_RAKEFILE = File.expand_path('spec/dummy/Rakefile', __dir__)
18
18
  load 'rails/tasks/engine.rake'
19
19
 
20
20
  load 'rails/tasks/statistics.rake'
@@ -25,11 +25,11 @@ module SortableBy
25
25
  #
26
26
  def sortable_table_header(path_helper, model: nil, permit: [], icon: SortableBy.icon_strategy, &block)
27
27
  header = SortableBy::TableHeader.new(
28
- path_helper: path_helper,
29
- model: model,
28
+ path_helper:,
29
+ model:,
30
30
  params: params.permit(permit.concat(SortableBy.params_list)),
31
31
  context: self,
32
- icon: icon)
32
+ icon:)
33
33
  header.capture(block) if block
34
34
  header.to_html
35
35
  end
@@ -7,5 +7,5 @@ module SortableBy
7
7
  self.params_list = [:sort, :dir, :search, :tab]
8
8
 
9
9
  # Default icon strategy to be used
10
- self.icon_strategy = :glyph
10
+ self.icon_strategy = :basic
11
11
  end
@@ -1,7 +1,7 @@
1
1
  module SortableBy
2
2
  class Engine < ::Rails::Engine
3
3
  initializer :controller do
4
- ActionController::Base.send(:include, SortableBy::Params)
4
+ ActiveSupport.on_load(:action_controller) { include SortableBy::Params }
5
5
  end
6
6
  end
7
7
  end
@@ -3,9 +3,7 @@ module SortableBy
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  module ClassMethods
6
- attr_accessor :default_sort_attribute
7
- attr_accessor :default_sort_dir
8
- attr_accessor :sortable_mapping
6
+ attr_accessor :default_sort_attribute, :default_sort_dir, :sortable_mapping
9
7
 
10
8
  # Define attributes you wish to sort by
11
9
  #
@@ -27,7 +25,7 @@ module SortableBy
27
25
  def sortable_by(*attributes, **options)
28
26
  @default_sort_attribute = options.delete(:default)
29
27
  @default_sort_dir = options.delete(:direction) || :asc
30
- @sortable_mapping = options.merge(attributes.map { |att| [att, att] }.to_h)
28
+ @sortable_mapping = options.merge(attributes.to_h { |att| [att, att] })
31
29
  end
32
30
  end
33
31
 
@@ -56,6 +54,7 @@ module SortableBy
56
54
  #
57
55
  def sortable_query
58
56
  return unless sort_attribute
57
+
59
58
  normalize_sort_value(
60
59
  sort_attribute,
61
60
  sort_direction
@@ -66,13 +65,14 @@ module SortableBy
66
65
  #
67
66
  def normalize_sort_value(sort_by, direction)
68
67
  mapping = self.class.sortable_mapping[sort_by]
69
- if mapping.is_a? Symbol
68
+ case mapping
69
+ when Symbol
70
70
  { mapping => sort_direction }
71
- elsif mapping.is_a? String
71
+ when String
72
72
  mapping.gsub(':dir', sort_direction.to_s)
73
- elsif mapping.is_a? Array
74
- mapping.map { |att| [att, direction] }.to_h
75
- elsif mapping.is_a? Proc
73
+ when Array
74
+ mapping.index_with { |_att| direction }
75
+ when Proc
76
76
  mapping.call(direction)
77
77
  else
78
78
  logger.debug("WARNING: Sort attribute '#{sort_by}' is not recognized. Did you mean to pass it to sortable_by?")
@@ -8,7 +8,7 @@ module SortableBy
8
8
  # Forward view helper methods to the view context
9
9
  delegate :concat, :content_tag, :link_to, to: :context
10
10
 
11
- def initialize(path_helper:, model: nil, params: {}, context:, icon:)
11
+ def initialize(path_helper:, context:, icon:, model: nil, params: {})
12
12
  @path_helper = path_helper
13
13
  @model = model
14
14
  @params = params
@@ -39,7 +39,7 @@ module SortableBy
39
39
  end
40
40
 
41
41
  def to_html
42
- content_tag :thead, to_row, class: 'tb-table-header'
42
+ content_tag :thead, to_row, class: 'sortable-table-header'
43
43
  end
44
44
 
45
45
  private
@@ -88,6 +88,7 @@ module SortableBy
88
88
 
89
89
  def sort_arrow_for_attribute(attribute)
90
90
  return '' unless @params[:sort] == attribute.to_s
91
+
91
92
  IconStrategy.send(@icon, context, current_direction) if IconStrategy.respond_to?(@icon)
92
93
  end
93
94
  end
@@ -103,5 +104,10 @@ module SortableBy
103
104
  icon_class = dir == 'asc' ? 'up' : 'down'
104
105
  context.content_tag(:span, '', class: "glyphicon glyphicon-arrow-#{icon_class}")
105
106
  end
107
+
108
+ def self.basic(context, dir)
109
+ text = dir == 'desc' ? '▼' : '▲'
110
+ context.content_tag(:span, text, class: 'sortable-direction')
111
+ end
106
112
  end
107
113
  end
@@ -1,3 +1,3 @@
1
1
  module SortableBy
2
- VERSION = '1.0'.freeze
2
+ VERSION = '1.0.2'.freeze
3
3
  end
data/lib/sortable_by.rb CHANGED
@@ -2,5 +2,6 @@ require 'sortable_by/engine'
2
2
 
3
3
  module SortableBy
4
4
  require 'sortable_by/configuration'
5
+ require 'sortable_by/params'
5
6
  require 'sortable_by/table_header'
6
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sortable_by
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Woods
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-04 00:00:00.000000000 Z
11
+ date: 2022-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '5.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: pg
28
+ name: database_cleaner
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec-rails
42
+ name: pg
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: database_cleaner
56
+ name: rspec-rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: simplecov
70
+ name: rubocop
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rubocop
84
+ name: rubocop-rails
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -94,8 +94,8 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- description: This gem adds capabilities to create sortable table headersconnect those
98
- headers to a back end ActiveRecord sort query
97
+ description: Adds capabilities to create sortable table headers and connect them to
98
+ an ActiveRecord query
99
99
  email:
100
100
  - greg.woods@moserit.com
101
101
  executables: []
@@ -105,19 +105,20 @@ files:
105
105
  - MIT-LICENSE
106
106
  - README.md
107
107
  - Rakefile
108
- - app/controllers/concerns/sortable_by/params.rb
109
108
  - app/helpers/sortable_by/table_helper.rb
110
109
  - lib/sortable_by.rb
111
110
  - lib/sortable_by/configuration.rb
112
111
  - lib/sortable_by/engine.rb
112
+ - lib/sortable_by/params.rb
113
113
  - lib/sortable_by/table_header.rb
114
114
  - lib/sortable_by/version.rb
115
115
  - lib/tasks/sortable_by_tasks.rake
116
116
  homepage: https://github.com/moser-inc/sortable_by
117
117
  licenses:
118
118
  - MIT
119
- metadata: {}
120
- post_install_message:
119
+ metadata:
120
+ rubygems_mfa_required: 'true'
121
+ post_install_message:
121
122
  rdoc_options: []
122
123
  require_paths:
123
124
  - lib
@@ -125,16 +126,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
126
  requirements:
126
127
  - - ">="
127
128
  - !ruby/object:Gem::Version
128
- version: '0'
129
+ version: '3.1'
129
130
  required_rubygems_version: !ruby/object:Gem::Requirement
130
131
  requirements:
131
132
  - - ">="
132
133
  - !ruby/object:Gem::Version
133
134
  version: '0'
134
135
  requirements: []
135
- rubyforge_project:
136
- rubygems_version: 2.6.12
137
- signing_key:
136
+ rubygems_version: 3.3.22
137
+ signing_key:
138
138
  specification_version: 4
139
139
  summary: Simple tool for sorting tables of data in rails
140
140
  test_files: []