activesorting 0.8.1 → 0.8.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
  SHA1:
3
- metadata.gz: 25b153abfd8dcdce3eb5441f7c4cb69b7c1de7c9
4
- data.tar.gz: 9820bbde81b0b13ec2eadcace27aea620f3899fb
3
+ metadata.gz: c24c8e9fbc1fecc4dc1e2e96d8c0580ceb5eab7f
4
+ data.tar.gz: a043f97b256be42f1b73a86068a804af1177030c
5
5
  SHA512:
6
- metadata.gz: 61c7e122234c614add381a063b9bfd6642b8e6b8fe0536e8ac3964aa60b7829893b0d797d32550a197f93e661eb51d9f508a31821906942652021753769a8595
7
- data.tar.gz: c8ea678bee8c09ce83486826ed8a73edb4f5f3ed1fed33f958477e411df0c942369de5cd618492cc5a6397a1b1047823ca058bfa688e7fcba62250b3819304dc
6
+ metadata.gz: ba29eb87ce28ba1b4b70543b89acb16677be1a1e71f93e2b2f449b879624d8cb073a516af34eaa86c61893bbb06d28c59caa6a0517c87c3da9e8f766113e3d59
7
+ data.tar.gz: f5f2b3adce2f2282d1615e560759651274a1b45ff525dc5071802de13085dc5ad8f7d4b5d27c04a6142ab2593537baf1f45bab6fd053123f3f5f19b6d1294dfa
data/README.md CHANGED
@@ -52,9 +52,11 @@ To sort by a model field `position`:
52
52
  You can customize the sorting behavior by
53
53
  passing an options hash. The following keys are supported:
54
54
 
55
- `order` sorting direction, defaults to :asc
56
- `step` stepping value, defaults to 500
57
- `scope` scopes, defaults to []
55
+ `:order` sorting direction, can be one of `:asc` or `:desc`, defaults to __:asc__
56
+
57
+ `:step` stepping value, only `integers` allowed, defaults to __500__
58
+
59
+ `:scope` scopes, defines the `ActiveRecord` `scope` applied before calculating the `position` field value. Defaults to __[]__
58
60
 
59
61
  ## Development
60
62
 
@@ -34,10 +34,10 @@ module ActiveSorting
34
34
  raise ArgumentError, "Sortable list should not be empty" unless new_list.count
35
35
  conditions = {}
36
36
  conditions[id_column] = new_list
37
- old_list = unscoped.where(conditions).pluck(id_column)
37
+ old_list = unscoped.active_sorting_default_scope.where(conditions).pluck(id_column)
38
38
  raise ArgumentError, "Sortable list should be persisted to database" unless old_list.count
39
39
  changes = active_sorting_changes_required(old_list, new_list)
40
- active_sorting_make_changes(new_list, changes, id_column)
40
+ active_sorting_make_changes(old_list, new_list, changes, id_column)
41
41
  end
42
42
 
43
43
  # Default sorting options
@@ -107,7 +107,7 @@ module ActiveSorting
107
107
  end
108
108
 
109
109
  # Commit changes to database
110
- def active_sorting_make_changes(new_list, changes, id_column)
110
+ def active_sorting_make_changes(old_list, new_list, changes, id_column)
111
111
  new_list.each_with_index do |id, index|
112
112
  next unless changes.include?(id)
113
113
  if index == new_list.count.pred
@@ -119,8 +119,8 @@ module ActiveSorting
119
119
  elsif index == 0
120
120
  # We're moving an item to first position
121
121
  # Calculate the gap between following 2 items
122
- n1 = active_sorting_find_by(id_column, new_list[index.next]).active_sorting_value
123
- n2 = active_sorting_find_by(id_column, new_list[index.next]).active_sorting_value
122
+ n1 = 0
123
+ n2 = active_sorting_find_by(id_column, old_list[index]).active_sorting_value
124
124
  else
125
125
  # We're moving a non-terminal item
126
126
  n1 = active_sorting_find_by(id_column, new_list[index.pred]).active_sorting_value
@@ -1,3 +1,3 @@
1
1
  module ActiveSorting
2
- VERSION = '0.8.1'.freeze
2
+ VERSION = '0.8.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activesorting
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Omar Abdel-Wahab
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-20 00:00:00.000000000 Z
11
+ date: 2016-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler