dynatree-rails 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.
data/README.md CHANGED
@@ -24,14 +24,47 @@ css:
24
24
 
25
25
  or
26
26
 
27
- //= require dynatree/skin-vista
27
+ //= require dynatree/skin
28
28
 
29
29
  js:
30
30
 
31
31
  //= require dynatree/jquery.dynatree
32
32
 
33
33
  For dynatree usage and examples see: http://code.google.com/p/dynatree/
34
-
34
+
35
+ ## An optional model-to-javascript tree renderer for mongoid_nested_set
36
+
37
+ Can be used to turn association select to a tree select, like this:
38
+
39
+ #checkboxes
40
+ = f.association :categories, as: :check_boxes, collection: Category.all
41
+ #tree.controls.input{style: 'width: 220px;'}
42
+
43
+ :javascript
44
+ var categories = #{Dynatree::Renderer.new(Category.nested_set.all, f.object.categories).render()};
45
+ $(function(){
46
+ $('#checkboxes').hide();
47
+
48
+ $("#tree").dynatree({
49
+ checkbox: true,
50
+ selectMode: 3,
51
+ classNames: {
52
+ active: "dynatree-active-no"
53
+ },
54
+ children: categories
55
+ });
56
+
57
+ $("form").submit(function() {
58
+ var tree = $("#tree").dynatree("getTree"),
59
+ arr = tree.serializeArray(),
60
+ sel = $('#restaurant_category_ids');
61
+ sel.find('option:selected').removeAttr('selected');
62
+ $.each(arr, function(k, v) {
63
+ sel.find('[value=' + v.value + ']').prop('selected', 'selected');
64
+ });
65
+ });
66
+ });
67
+
35
68
  ## Contributing
36
69
 
37
70
  1. Fork it
@@ -0,0 +1,53 @@
1
+ # Configure for Rails 3.1
2
+ module Dynatree
3
+ class Renderer
4
+ def initialize(tree, association)
5
+ @tree = tree
6
+ @association = association
7
+ end
8
+
9
+ def render()
10
+ self.recurse(nil).to_json
11
+ end
12
+
13
+ def has_selected_children(id)
14
+ items = @tree.select{ |elem| elem.parent_id == id }
15
+ if items.empty?
16
+ false
17
+ else
18
+ items.each do |item|
19
+ if @association.include? item
20
+ return true
21
+ end
22
+ if has_selected_children(item.id)
23
+ return true
24
+ end
25
+ end
26
+ false
27
+ end
28
+ end
29
+
30
+ def recurse(parent_id)
31
+ ret = []
32
+ items = @tree.select{ |elem| elem.parent_id == parent_id }
33
+ unless items.empty?
34
+ items.each do |item|
35
+ ch = {}
36
+ if @association.include? item
37
+ ch['select'] = true
38
+ ch['expand'] = true
39
+ else
40
+ if has_selected_children(item.id)
41
+ ch['expand'] = true
42
+ end
43
+ end
44
+ ch['title'] = item.name
45
+ ch['key'] = item.id
46
+ ch['children'] = self.recurse(item.id)
47
+ ret << ch
48
+ end
49
+ end
50
+ ret
51
+ end
52
+ end
53
+ end
@@ -1,5 +1,5 @@
1
1
  module Dynatree
2
2
  module Rails
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -1,2 +1,3 @@
1
1
  require "dynatree-rails/version"
2
2
  require "dynatree-rails/engine"
3
+ require "dynatree-rails/renderer"
@@ -28,10 +28,10 @@ ul
28
28
  background-attachment: scroll
29
29
  background-color: transparent
30
30
  background-repeat: repeat-y
31
- background-image: url("vline.gif")
31
+ background-image: image-url("dynatree/skin/vline.gif")
32
32
  background-position: 0 0
33
33
  /*
34
- *background-image: url("icons_96x256.gif");
34
+ *background-image: image-url("dynatree/skin/icons_96x256.gif");
35
35
  *background-position: -80px -64px;
36
36
  margin: 0
37
37
  padding: 1px 0 0 0
@@ -65,7 +65,7 @@ span
65
65
  vertical-align: top
66
66
  background-repeat: no-repeat
67
67
  background-position: left
68
- background-image: url("icons.gif")
68
+ background-image: image-url("dynatree/skin/icons.gif")
69
69
  background-position: 0 0
70
70
 
71
71
  #dynatree-drop-marker
@@ -78,7 +78,7 @@ span
78
78
  vertical-align: top
79
79
  background-repeat: no-repeat
80
80
  background-position: left
81
- background-image: url("icons.gif")
81
+ background-image: image-url("dynatree/skin/icons.gif")
82
82
  background-position: 0 0
83
83
 
84
84
  /** Used by 'icon' node option:
@@ -127,7 +127,7 @@ span
127
127
 
128
128
  .dynatree-loading span.dynatree-expander
129
129
  background-position: 0 0
130
- background-image: url("loading.gif")
130
+ background-image: image-url("dynatree/skin/loading.gif")
131
131
 
132
132
  /*******************************************************************************
133
133
  * Checkbox icon
@@ -191,11 +191,11 @@ span.dynatree-icon
191
191
  /* Status node icons
192
192
 
193
193
  .dynatree-statusnode-wait span.dynatree-icon
194
- background-image: url("loading.gif")
194
+ background-image: image-url("dynatree/skin/loading.gif")
195
195
 
196
196
  .dynatree-statusnode-error span.dynatree-icon
197
197
  background-position: 0px -112px
198
- /* background-image: url("ltError.gif");
198
+ /* background-image: image-url("dynatree/skin/ltError.gif");
199
199
 
200
200
  /*******************************************************************************
201
201
  * Node titles
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynatree-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -27,6 +27,7 @@ files:
27
27
  - dynatree-rails.gemspec
28
28
  - lib/dynatree-rails.rb
29
29
  - lib/dynatree-rails/engine.rb
30
+ - lib/dynatree-rails/renderer.rb
30
31
  - lib/dynatree-rails/version.rb
31
32
  - vendor/assets/images/dynatree/jquery.dynatree.js
32
33
  - vendor/assets/images/dynatree/skin-vista/icons.gif