sortability 0.0.1 → 0.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 +4 -4
- data/README.md +2 -2
- data/lib/sortability/active_record/base.rb +16 -9
- data/lib/sortability/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29973c452c7c5e7cefbedbe2dd255581109dc2e2
|
4
|
+
data.tar.gz: 648ede88227d43edc148332223a3ebf8c629a763
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a03cc07e6a6c2289c06a8cccc7c58341d698a034fd47fea0d5a1fbb3c2d475e91ad60d332e77821ad2498c3468ad06ea6087d6df8b54447d0c6278180bddd6a
|
7
|
+
data.tar.gz: 7b17c665e6debd0646e8ff2a54623441b3f34273c3030efb3a808181f93bed0a91c0d7972974a07935cbf87ad15b2f4f21201f94925d193cd3d08171682db2fe
|
data/README.md
CHANGED
@@ -129,7 +129,7 @@ Here are some things that you can do:
|
|
129
129
|
`container` also be automatically updated to create a gap for that `record`.
|
130
130
|
|
131
131
|
- Close all gaps in the `sort_position` for the peers of a `record`
|
132
|
-
by calling the `compact_sort_position_peers
|
132
|
+
by calling the `compact_sort_position_peers!` method.
|
133
133
|
|
134
134
|
- Get the next or previous record by using the `next_by_sort_position` or
|
135
135
|
`previous_by_sort_position` methods.
|
@@ -138,7 +138,7 @@ The `sort_position` is not guaranteed to contain consecutive numbers.
|
|
138
138
|
When listing the `records`, you should compute their positions
|
139
139
|
in application code as you iterate through the list.
|
140
140
|
If you need the position for a single `record`, call
|
141
|
-
`compact_sort_position_peers
|
141
|
+
`compact_sort_position_peers!` first to close any gaps
|
142
142
|
in its peers, then read `sort_position` directly.
|
143
143
|
|
144
144
|
## Contributing
|
@@ -19,7 +19,7 @@ module Sortability
|
|
19
19
|
before_validation_mname = "#{onname}_before_validation"
|
20
20
|
next_by_mname = "next_by_#{onname}"
|
21
21
|
prev_by_mname = "previous_by_#{onname}"
|
22
|
-
compact_peers_mname = "compact_#{onname}_peers"
|
22
|
+
compact_peers_mname = "compact_#{onname}_peers!"
|
23
23
|
|
24
24
|
class_exec do
|
25
25
|
before_validation before_validation_mname
|
@@ -85,20 +85,27 @@ module Sortability
|
|
85
85
|
# Renumbers the peers so that their numbers are sequential,
|
86
86
|
# starting at 1
|
87
87
|
define_method compact_peers_mname do
|
88
|
-
|
89
|
-
defined?(ActiveRecord::ConnectionAdapters::MysqlAdapter) && \
|
90
|
-
ActiveRecord::Base.connection.instance_of?(
|
91
|
-
ActiveRecord::ConnectionAdapters::MysqlAdapter)
|
92
|
-
cend = mysql ? 'END CASE' : 'END'
|
93
|
-
|
88
|
+
needs_update = false
|
94
89
|
peers = send(peers_mname)
|
95
90
|
cases = peers.to_a.collect.with_index do |p, i|
|
91
|
+
old_val = p.send(on)
|
92
|
+
new_val = i + 1
|
93
|
+
needs_update = true if old_val != new_val
|
94
|
+
|
96
95
|
# Make sure "on" field in self is up to date
|
97
|
-
send(setter_mname,
|
96
|
+
send(setter_mname, new_val) if p == self
|
98
97
|
|
99
|
-
"WHEN #{
|
98
|
+
"WHEN #{old_val} THEN #{- new_val}"
|
100
99
|
end.join(' ')
|
101
100
|
|
101
|
+
return peers unless needs_update
|
102
|
+
|
103
|
+
mysql = \
|
104
|
+
defined?(ActiveRecord::ConnectionAdapters::MysqlAdapter) && \
|
105
|
+
ActiveRecord::Base.connection.instance_of?(
|
106
|
+
ActiveRecord::ConnectionAdapters::MysqlAdapter)
|
107
|
+
cend = mysql ? 'END CASE' : 'END'
|
108
|
+
|
102
109
|
self.class.transaction do
|
103
110
|
peers.reorder(nil)
|
104
111
|
.update_all("#{onname} = CASE #{onname} #{cases} #{cend}")
|
data/lib/sortability/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sortability
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dante Soares
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-12-
|
12
|
+
date: 2014-12-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|