the_sortable_tree 2.1.0 → 2.2.0

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.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # TheSortableTree v2.1.0
1
+ # TheSortableTree v2.2.0
2
2
 
3
3
  Nested Set + Drag&Drop GUI. Very fast! Best render helper! **2000 nodes/sec**. Ready for rails 4 ([RubyGems](http://rubygems.org/gems/the_sortable_tree))
4
4
 
@@ -103,31 +103,39 @@ class PagesController < ApplicationController
103
103
  end
104
104
  ```
105
105
 
106
+ ## Basic Render Method
107
+
108
+ ```ruby
109
+ build_server_tree(tree, options)
110
+ ```
111
+
106
112
  ## Render Tree
107
113
 
108
114
  **app/views/pages/manage.html.haml**
109
115
 
110
116
  ```haml
111
- %ol.tree= build_server_tree @pages
117
+ %ol.tree= just_tree @pages
112
118
  ```
113
119
 
114
- ## Render Sortable Tree
120
+ **just_tree** is just alias of **build_server_tree(tree, type: :tree)**
115
121
 
116
- **app/views/pages/manage.html.haml**
122
+ ## Render Sortable Tree
117
123
 
118
124
  ```haml
119
125
  %ol.sortable_tree{ data: { max_levels: 5, rebuild_url: rebuild_pages_url } }
120
- = build_server_tree @pages, type: :sortable
126
+ = sortable_tree @pages
121
127
  ```
128
+ **sortable_tree** is just alias of **build_server_tree(tree, type: :sortable)**
122
129
 
123
130
  ## Render Nested Options Tree
124
131
 
125
- **app/views/pages/manage.html.haml**
126
-
127
132
  ```haml
128
- = select_tag :pages, nested_options(@pages, :selected => Page.last), class: :nested_options
133
+ = select_tag :page_id, nested_options(@pages, :selected => Page.last), class: :nested_options
129
134
  ```
130
135
 
136
+ **nested_options** is just alias of **build_server_tree(tree, type: :nested_options)**
137
+
138
+
131
139
  ## build_server_tree options
132
140
 
133
141
  **Client side:**
@@ -144,11 +152,20 @@ Required params for sortable GUI! Must be defined at root element of tree.
144
152
 
145
153
  **Server side:**
146
154
 
155
+
156
+ define
157
+
158
+ ```ruby
159
+ build_server_tree(pages, {:option_1 => :value_1, :option_2 => :value_2})
160
+ ```
161
+
162
+ use
163
+
147
164
  ```ruby
148
165
  options[:NAME]
149
166
  ```
150
167
 
151
- Optional params
168
+ Options list:
152
169
 
153
170
  1. **id** - id field of node
154
171
  2. **title** - title field of node
@@ -201,11 +218,12 @@ bundle exec rails g the_sortable_tree:views assets
201
218
 
202
219
  BANCHMARK:
203
220
 
204
- - Server Side, 16.000 nodes, 3 levels
221
+ tree params: 16.000 nodes, 3 levels
222
+
205
223
  - Views: 7999.6ms | ActiveRecord: 79.2ms
206
224
  - WebInspector full time ~ 9.64s
207
225
 
208
- total: ~**2000 nodes/sec**
226
+ total: ~ **2000 nodes/sec**
209
227
 
210
228
  ## Looking for maintainers
211
229
 
@@ -219,6 +237,13 @@ Try to create view helpers for:
219
237
  4. Comments Tree gem
220
238
  3. gem Ancestry (???)
221
239
 
240
+ ## I want to try! I need tests!
241
+
242
+ 1. I'm develop gem with test app [the_sortable_tree_test_app](https://github.com/the-teacher/the_sortable_tree_test_app). You can clone it and see some testcase-pages for gem
243
+ 2. Sorry, but I have not tests for this gem. Gem is so easy. It's easy to test only with test app.
244
+ 3. You can write some tests, if your need.
245
+ 4. No! I know RSpec. I can write tests. But I have not reasons to write tests here.
246
+
222
247
  ## Аcknowledgment
223
248
 
224
249
  1. [mjsarfatti/nestedSortable](https://github.com/mjsarfatti/nestedSortable)
@@ -1,4 +1,4 @@
1
- module RenderSelectOptionsHelper
1
+ module RenderNestedOptionsHelper
2
2
  class Render
3
3
  class << self
4
4
  attr_accessor :h, :options
@@ -10,7 +10,7 @@ module RenderSelectOptionsHelper
10
10
  selected = (options[:selected] == node) ? ' selected' : nil
11
11
 
12
12
  "
13
- <option value='#{node[:id]}' class='l_#{ options[:level] }#{selected}'>#{ node[:title] }</option>
13
+ <option value='#{node[:id]}' class='l_#{ options[:level] }#{selected}'>#{ node.send(options[:title]) }</option>
14
14
  #{ options[:children] }
15
15
  "
16
16
  end
@@ -9,7 +9,7 @@ module TheSortableTreeHelper
9
9
  TREE_RENDERERS = {
10
10
  :tree => RenderTreeHelper,
11
11
  :sortable => RenderSortableTreeHelper,
12
- :select_options => RenderSelectOptionsHelper
12
+ :nested_options => RenderNestedOptionsHelper
13
13
  }
14
14
 
15
15
  ###############################################
@@ -29,13 +29,19 @@ module TheSortableTreeHelper
29
29
  end
30
30
 
31
31
  ###############################################
32
- # Nested Options Helper
32
+ # Shortcuts
33
33
  ###############################################
34
+
35
+ def just_tree tree, options = {}
36
+ build_server_tree(tree, { :type => :tree }.merge!(options))
37
+ end
38
+
39
+ def sortable_tree tree, options = {}
40
+ build_server_tree(tree, { :type => :sortable }.merge!(options))
41
+ end
34
42
 
35
43
  def nested_options tree, options = {}
36
- opts = { :type => :select_options }
37
- opts.merge!(options)
38
- build_server_tree(tree, opts)
44
+ build_server_tree(tree, { :type => :nested_options }.merge!(options))
39
45
  end
40
46
 
41
47
  ###############################################
@@ -72,6 +78,8 @@ module TheSortableTreeHelper
72
78
  opts[:klass] = define_class_of_elements_of(tree) unless opts[:klass]
73
79
 
74
80
  # BOOST PATCH (BUILD ONCE)
81
+ # solution of main perfomance problem
82
+ # magick index-array, which made me happy!
75
83
  if opts[:boost].empty?
76
84
  tree.each do |item|
77
85
  num = item.parent_id || 0
@@ -91,9 +99,11 @@ module TheSortableTreeHelper
91
99
  end
92
100
 
93
101
  # children rendering
94
- roots.each do |root|
95
- _opts = opts.merge({ :node => root, :root => true, :level => opts[:level].next, :boost => opts[:boost] })
96
- result << build_server_tree(tree, _opts)
102
+ if roots
103
+ roots.each do |root|
104
+ _opts = opts.merge({ :node => root, :root => true, :level => opts[:level].next, :boost => opts[:boost] })
105
+ result << build_server_tree(tree, _opts)
106
+ end
97
107
  end
98
108
  else
99
109
  # RENDER NODE'S CHILDREN
@@ -1,3 +1,3 @@
1
1
  module TheSortableTree
2
- VERSION = "2.1.0"
2
+ VERSION = "2.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: the_sortable_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-20 00:00:00.000000000 Z
12
+ date: 2013-01-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &81000690 !ruby/object:Gem::Requirement
16
+ requirement: &85373190 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *81000690
24
+ version_requirements: *85373190
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sqlite3
27
- requirement: &81000310 !ruby/object:Gem::Requirement
27
+ requirement: &85372810 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *81000310
35
+ version_requirements: *85372810
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &80999910 !ruby/object:Gem::Requirement
38
+ requirement: &85372410 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *80999910
46
+ version_requirements: *85372410
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec-rails
49
- requirement: &80999620 !ruby/object:Gem::Requirement
49
+ requirement: &85372120 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *80999620
57
+ version_requirements: *85372120
58
58
  description: Drag&Drop GUI for awesom_nested_set. Render Tree Helper. Very fast! Ready
59
59
  for Rails 4
60
60
  email:
@@ -81,10 +81,10 @@ files:
81
81
  - app/assets/javascripts/sortable_tree/initializer.js.coffee
82
82
  - app/views/sortable/client/_tree.html.erb
83
83
  - app/views/tree/client/_tree.html.erb
84
- - app/helpers/render_select_options_helper.rb
85
84
  - app/helpers/render_tree_helper.rb
86
85
  - app/helpers/the_sortable_tree_helper.rb
87
86
  - app/helpers/render_sortable_tree_helper.rb
87
+ - app/helpers/render_nested_options_helper.rb
88
88
  - lib/the_sortable_tree/version.rb
89
89
  - lib/the_sortable_tree/engine.rb
90
90
  - lib/generators/the_sortable_tree/views_generator.rb