jqtree-rails 0.1.3 → 0.1.4.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/Gemfile +2 -1
- data/Gemfile.lock +1 -55
- data/VERSION +1 -1
- data/jqtree-rails.gemspec +7 -8
- data/lib/jqtree/rails/version.rb +1 -1
- data/vendor/assets/javascripts/tree.jquery.js +271 -110
- data/vendor/assets/stylesheets/jqtree.css +4 -6
- metadata +21 -22
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,64 +1,10 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
jqtree-rails (0.1.2)
|
5
|
-
railties (>= 3.2.0, < 5.0)
|
6
|
-
thor (~> 0.14)
|
7
|
-
version (~> 1.0)
|
8
|
-
|
9
1
|
GEM
|
10
2
|
remote: http://rubygems.org/
|
11
3
|
specs:
|
12
|
-
actionpack (3.2.8)
|
13
|
-
activemodel (= 3.2.8)
|
14
|
-
activesupport (= 3.2.8)
|
15
|
-
builder (~> 3.0.0)
|
16
|
-
erubis (~> 2.7.0)
|
17
|
-
journey (~> 1.0.4)
|
18
|
-
rack (~> 1.4.0)
|
19
|
-
rack-cache (~> 1.2)
|
20
|
-
rack-test (~> 0.6.1)
|
21
|
-
sprockets (~> 2.1.3)
|
22
|
-
activemodel (3.2.8)
|
23
|
-
activesupport (= 3.2.8)
|
24
|
-
builder (~> 3.0.0)
|
25
|
-
activesupport (3.2.8)
|
26
|
-
i18n (~> 0.6)
|
27
|
-
multi_json (~> 1.0)
|
28
|
-
builder (3.0.3)
|
29
|
-
erubis (2.7.0)
|
30
|
-
hike (1.2.1)
|
31
|
-
i18n (0.6.1)
|
32
|
-
journey (1.0.4)
|
33
|
-
json (1.7.5)
|
34
|
-
multi_json (1.3.6)
|
35
|
-
rack (1.4.1)
|
36
|
-
rack-cache (1.2)
|
37
|
-
rack (>= 0.4)
|
38
|
-
rack-ssl (1.3.2)
|
39
|
-
rack
|
40
|
-
rack-test (0.6.2)
|
41
|
-
rack (>= 1.0)
|
42
|
-
railties (3.2.8)
|
43
|
-
actionpack (= 3.2.8)
|
44
|
-
activesupport (= 3.2.8)
|
45
|
-
rack-ssl (~> 1.3.2)
|
46
|
-
rake (>= 0.8.7)
|
47
|
-
rdoc (~> 3.4)
|
48
|
-
thor (>= 0.14.6, < 2.0)
|
49
|
-
rake (0.9.2.2)
|
50
|
-
rdoc (3.12)
|
51
|
-
json (~> 1.4)
|
52
|
-
sprockets (2.1.3)
|
53
|
-
hike (~> 1.2)
|
54
|
-
rack (~> 1.0)
|
55
|
-
tilt (~> 1.1, != 1.3.0)
|
56
|
-
thor (0.16.0)
|
57
|
-
tilt (1.3.3)
|
58
4
|
version (1.0.0)
|
59
5
|
|
60
6
|
PLATFORMS
|
61
7
|
ruby
|
62
8
|
|
63
9
|
DEPENDENCIES
|
64
|
-
|
10
|
+
version
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4.2
|
data/jqtree-rails.gemspec
CHANGED
@@ -2,22 +2,21 @@
|
|
2
2
|
require File.expand_path('../lib/jqtree/rails/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
|
-
s.name =
|
5
|
+
s.name = 'jqtree-rails'
|
6
6
|
s.version = JqTree::Rails::VERSION
|
7
|
-
s.
|
8
|
-
s.
|
9
|
-
s.
|
10
|
-
s.homepage = "http://rubygems.org/gems/#{s.name}"
|
7
|
+
s.authors = ["Ryan Scott Lewis", "Mario Uher"] # TODO:
|
8
|
+
s.email = ["ryan@rynet.us", "uher.mario@gmail.com"] # Pull from Git repo (see f.files)
|
9
|
+
s.homepage = "https://github.com/RyanScottLewis/jqtree-rails"
|
11
10
|
s.summary = "Use jqTree with Rails 3"
|
12
11
|
s.description = "This gem provides jqTree assets for your Rails 3 application."
|
13
12
|
|
14
13
|
s.required_rubygems_version = ">= 1.3.6"
|
15
14
|
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
|
16
17
|
s.add_dependency "railties", ">= 3.2.0", "< 5.0"
|
17
18
|
s.add_dependency "thor", "~> 0.14" # TODO: Find out why this is needed
|
18
19
|
s.add_dependency "version", "~> 1.0"
|
19
20
|
|
20
|
-
|
21
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) } # TODO: Remove
|
22
|
-
s.require_path = 'lib' # TODO: Pretty sure this is implied, check gemspec specifications
|
21
|
+
|
23
22
|
end
|
data/lib/jqtree/rails/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
// Generated by CoffeeScript 1.
|
1
|
+
// Generated by CoffeeScript 1.4.0
|
2
2
|
|
3
3
|
/*
|
4
4
|
Copyright 2012 Marco Braak
|
@@ -18,7 +18,7 @@ limitations under the License.
|
|
18
18
|
|
19
19
|
|
20
20
|
(function() {
|
21
|
-
var $, BorderDropHint, DragAndDropHandler, DragElement, FolderElement, GhostDropHint, JqTreeWidget, MouseWidget, Node, NodeElement, Position, SaveStateHandler, SelectNodeHandler, SimpleWidget, TRIANGLE_DOWN, TRIANGLE_RIGHT, Tree, html_escape, indexOf, json_escapable, json_meta, json_quote, json_str,
|
21
|
+
var $, BorderDropHint, DragAndDropHandler, DragElement, FolderElement, GhostDropHint, JqTreeWidget, MouseWidget, Node, NodeElement, Position, SaveStateHandler, ScrollHandler, SelectNodeHandler, SimpleWidget, TRIANGLE_DOWN, TRIANGLE_RIGHT, Tree, html_escape, indexOf, json_escapable, json_meta, json_quote, json_str,
|
22
22
|
__slice = [].slice,
|
23
23
|
__hasProp = {}.hasOwnProperty,
|
24
24
|
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
@@ -499,6 +499,11 @@ limitations under the License.
|
|
499
499
|
|
500
500
|
|
501
501
|
Node.prototype.removeChild = function(node) {
|
502
|
+
var _this = this;
|
503
|
+
node.iterate(function(child) {
|
504
|
+
_this.tree.removeNodeFromIndex(child);
|
505
|
+
return true;
|
506
|
+
});
|
502
507
|
this.children.splice(this.getChildIndex(node), 1);
|
503
508
|
return this.tree.removeNodeFromIndex(node);
|
504
509
|
};
|
@@ -749,6 +754,8 @@ limitations under the License.
|
|
749
754
|
|
750
755
|
this.Tree.Tree = Tree;
|
751
756
|
|
757
|
+
this.Tree.Node = Node;
|
758
|
+
|
752
759
|
TRIANGLE_RIGHT = '►';
|
753
760
|
|
754
761
|
TRIANGLE_DOWN = '▼';
|
@@ -774,14 +781,18 @@ limitations under the License.
|
|
774
781
|
onCanMove: null,
|
775
782
|
onCanMoveTo: null,
|
776
783
|
autoEscape: true,
|
777
|
-
dataUrl: null
|
784
|
+
dataUrl: null,
|
785
|
+
slide: true
|
778
786
|
};
|
779
787
|
|
780
|
-
JqTreeWidget.prototype.toggle = function(node) {
|
788
|
+
JqTreeWidget.prototype.toggle = function(node, slide) {
|
789
|
+
if (slide == null) {
|
790
|
+
slide = true;
|
791
|
+
}
|
781
792
|
if (node.is_open) {
|
782
|
-
return this.closeNode(node);
|
793
|
+
return this.closeNode(node, slide);
|
783
794
|
} else {
|
784
|
-
return this.openNode(node);
|
795
|
+
return this.openNode(node, slide);
|
785
796
|
}
|
786
797
|
};
|
787
798
|
|
@@ -789,8 +800,8 @@ limitations under the License.
|
|
789
800
|
return this.tree;
|
790
801
|
};
|
791
802
|
|
792
|
-
JqTreeWidget.prototype.selectNode = function(node
|
793
|
-
return this.select_node_handler.selectNode(node
|
803
|
+
JqTreeWidget.prototype.selectNode = function(node) {
|
804
|
+
return this.select_node_handler.selectNode(node);
|
794
805
|
};
|
795
806
|
|
796
807
|
JqTreeWidget.prototype.getSelectedNode = function() {
|
@@ -801,18 +812,59 @@ limitations under the License.
|
|
801
812
|
return JSON.stringify(this.tree.getData());
|
802
813
|
};
|
803
814
|
|
804
|
-
JqTreeWidget.prototype.loadData = function(
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
815
|
+
JqTreeWidget.prototype.loadData = function(data, parent_node) {
|
816
|
+
return this._loadData(data, parent_node);
|
817
|
+
};
|
818
|
+
|
819
|
+
JqTreeWidget.prototype.loadDataFromUrl = function(url_info, parent_node, on_finished) {
|
820
|
+
var $li, addLoadingClass, parseUrlInfo, removeLoadingClass,
|
821
|
+
_this = this;
|
822
|
+
$li = null;
|
823
|
+
addLoadingClass = function() {
|
824
|
+
var folder_element;
|
825
|
+
if (parent_node) {
|
826
|
+
folder_element = new FolderElement(parent_node, _this);
|
827
|
+
$li = folder_element.getLi();
|
828
|
+
return $li.addClass('jqtree-loading');
|
814
829
|
}
|
815
|
-
}
|
830
|
+
};
|
831
|
+
removeLoadingClass = function() {
|
832
|
+
if ($li) {
|
833
|
+
return $li.removeClass('loading');
|
834
|
+
}
|
835
|
+
};
|
836
|
+
parseUrlInfo = function() {
|
837
|
+
if ($.type(url_info) === 'string') {
|
838
|
+
url_info = {
|
839
|
+
url: url_info
|
840
|
+
};
|
841
|
+
}
|
842
|
+
if (!url_info.method) {
|
843
|
+
return url_info.method = 'get';
|
844
|
+
}
|
845
|
+
};
|
846
|
+
addLoadingClass();
|
847
|
+
parseUrlInfo();
|
848
|
+
return $.ajax({
|
849
|
+
url: url_info.url,
|
850
|
+
data: url_info.data,
|
851
|
+
type: url_info.method.toUpperCase(),
|
852
|
+
cache: false,
|
853
|
+
dataType: 'json',
|
854
|
+
success: function(response) {
|
855
|
+
var data;
|
856
|
+
if ($.isArray(response) || typeof response === 'object') {
|
857
|
+
data = response;
|
858
|
+
} else {
|
859
|
+
data = $.parseJSON(response);
|
860
|
+
}
|
861
|
+
removeLoadingClass();
|
862
|
+
_this._loadData(data, parent_node);
|
863
|
+
if (on_finished) {
|
864
|
+
return on_finished();
|
865
|
+
}
|
866
|
+
}
|
867
|
+
});
|
816
868
|
};
|
817
869
|
|
818
870
|
JqTreeWidget.prototype._loadData = function(data, parent_node) {
|
@@ -838,40 +890,6 @@ limitations under the License.
|
|
838
890
|
}
|
839
891
|
};
|
840
892
|
|
841
|
-
JqTreeWidget.prototype._loadDataFromServer = function(data_url, parent_node, on_finished) {
|
842
|
-
var $li, folder_element,
|
843
|
-
_this = this;
|
844
|
-
if (!data_url) {
|
845
|
-
return;
|
846
|
-
}
|
847
|
-
if (parent_node) {
|
848
|
-
folder_element = new FolderElement(parent_node, this);
|
849
|
-
$li = folder_element.getLi();
|
850
|
-
$li.addClass('jqtree-loading');
|
851
|
-
} else {
|
852
|
-
$li = null;
|
853
|
-
}
|
854
|
-
return $.ajax({
|
855
|
-
url: data_url,
|
856
|
-
cache: false,
|
857
|
-
success: function(response) {
|
858
|
-
var data;
|
859
|
-
if ($.isArray(response) || typeof response === 'object') {
|
860
|
-
data = response;
|
861
|
-
} else {
|
862
|
-
data = $.parseJSON(response);
|
863
|
-
}
|
864
|
-
if ($li) {
|
865
|
-
$li.removeClass('loading');
|
866
|
-
}
|
867
|
-
_this._loadData(data, parent_node);
|
868
|
-
if (on_finished) {
|
869
|
-
return on_finished();
|
870
|
-
}
|
871
|
-
}
|
872
|
-
});
|
873
|
-
};
|
874
|
-
|
875
893
|
JqTreeWidget.prototype.getNodeById = function(node_id) {
|
876
894
|
return this.tree.getNodeById(node_id);
|
877
895
|
};
|
@@ -880,34 +898,58 @@ limitations under the License.
|
|
880
898
|
return this.tree.getNodeByName(name);
|
881
899
|
};
|
882
900
|
|
883
|
-
JqTreeWidget.prototype.openNode = function(node,
|
884
|
-
|
901
|
+
JqTreeWidget.prototype.openNode = function(node, slide) {
|
902
|
+
if (slide == null) {
|
903
|
+
slide = true;
|
904
|
+
}
|
905
|
+
return this._openNode(node, slide);
|
885
906
|
};
|
886
907
|
|
887
|
-
JqTreeWidget.prototype._openNode = function(node,
|
888
|
-
var
|
908
|
+
JqTreeWidget.prototype._openNode = function(node, slide, on_finished) {
|
909
|
+
var doOpenNode, parent,
|
910
|
+
_this = this;
|
911
|
+
if (slide == null) {
|
912
|
+
slide = true;
|
913
|
+
}
|
914
|
+
doOpenNode = function(_node, _slide, _on_finished) {
|
915
|
+
var folder_element;
|
916
|
+
folder_element = new FolderElement(_node, _this);
|
917
|
+
return folder_element.open(_on_finished, _slide);
|
918
|
+
};
|
889
919
|
if (node.isFolder()) {
|
890
920
|
if (node.load_on_demand) {
|
891
|
-
return this._loadFolderOnDemand(node,
|
921
|
+
return this._loadFolderOnDemand(node, slide, on_finished);
|
892
922
|
} else {
|
893
|
-
|
894
|
-
|
923
|
+
parent = node.parent;
|
924
|
+
while (parent && !parent.is_open) {
|
925
|
+
if (parent.parent) {
|
926
|
+
doOpenNode(parent, false, null);
|
927
|
+
}
|
928
|
+
parent = parent.parent;
|
929
|
+
}
|
930
|
+
doOpenNode(node, slide, on_finished);
|
895
931
|
return this._saveState();
|
896
932
|
}
|
897
933
|
}
|
898
934
|
};
|
899
935
|
|
900
|
-
JqTreeWidget.prototype._loadFolderOnDemand = function(node,
|
936
|
+
JqTreeWidget.prototype._loadFolderOnDemand = function(node, slide, on_finished) {
|
901
937
|
var _this = this;
|
938
|
+
if (slide == null) {
|
939
|
+
slide = true;
|
940
|
+
}
|
902
941
|
node.load_on_demand = false;
|
903
|
-
return this.
|
904
|
-
return _this._openNode(node,
|
942
|
+
return this.loadDataFromUrl(this._getDataUrlInfo(node), node, function() {
|
943
|
+
return _this._openNode(node, slide, on_finished);
|
905
944
|
});
|
906
945
|
};
|
907
946
|
|
908
|
-
JqTreeWidget.prototype.closeNode = function(node,
|
947
|
+
JqTreeWidget.prototype.closeNode = function(node, slide) {
|
948
|
+
if (slide == null) {
|
949
|
+
slide = true;
|
950
|
+
}
|
909
951
|
if (node.isFolder()) {
|
910
|
-
new FolderElement(node, this).close(
|
952
|
+
new FolderElement(node, this).close(slide);
|
911
953
|
return this._saveState();
|
912
954
|
}
|
913
955
|
};
|
@@ -942,9 +984,32 @@ limitations under the License.
|
|
942
984
|
};
|
943
985
|
|
944
986
|
JqTreeWidget.prototype.removeNode = function(node) {
|
945
|
-
var parent
|
987
|
+
var mustUnselectedNode, parent,
|
988
|
+
_this = this;
|
989
|
+
mustUnselectedNode = function() {
|
990
|
+
var result;
|
991
|
+
if (!_this.selected_node) {
|
992
|
+
return false;
|
993
|
+
} else if (_this.selected_node === node) {
|
994
|
+
return true;
|
995
|
+
} else {
|
996
|
+
result = true;
|
997
|
+
iterate(function(child) {
|
998
|
+
if (node === child) {
|
999
|
+
result = true;
|
1000
|
+
return false;
|
1001
|
+
} else {
|
1002
|
+
return true;
|
1003
|
+
}
|
1004
|
+
});
|
1005
|
+
return result;
|
1006
|
+
}
|
1007
|
+
};
|
946
1008
|
parent = node.parent;
|
947
1009
|
if (parent) {
|
1010
|
+
if (mustUnselectedNode()) {
|
1011
|
+
this.selected_node = null;
|
1012
|
+
}
|
948
1013
|
node.remove();
|
949
1014
|
return this._refreshElements(parent.parent);
|
950
1015
|
}
|
@@ -1000,6 +1065,7 @@ limitations under the License.
|
|
1000
1065
|
this.save_state_handler = new SaveStateHandler(this);
|
1001
1066
|
this.select_node_handler = new SelectNodeHandler(this);
|
1002
1067
|
this.dnd_handler = new DragAndDropHandler(this);
|
1068
|
+
this.scroll_handler = new ScrollHandler(this);
|
1003
1069
|
this._initData();
|
1004
1070
|
this.element.click($.proxy(this._click, this));
|
1005
1071
|
return this.element.bind('contextmenu', $.proxy(this._contextmenu, this));
|
@@ -1016,19 +1082,27 @@ limitations under the License.
|
|
1016
1082
|
if (this.options.data) {
|
1017
1083
|
return this.loadData(this.options.data);
|
1018
1084
|
} else {
|
1019
|
-
return this.
|
1085
|
+
return this.loadDataFromUrl(this._getDataUrlInfo());
|
1020
1086
|
}
|
1021
1087
|
};
|
1022
1088
|
|
1023
|
-
JqTreeWidget.prototype.
|
1024
|
-
var data_url;
|
1089
|
+
JqTreeWidget.prototype._getDataUrlInfo = function(node) {
|
1090
|
+
var data, data_url, url_info;
|
1025
1091
|
data_url = this.options.dataUrl || this.element.data('url');
|
1026
1092
|
if ($.isFunction(data_url)) {
|
1027
1093
|
return data_url(node);
|
1028
|
-
} else {
|
1029
|
-
|
1030
|
-
data_url
|
1094
|
+
} else if ($.type(data_url) === 'string') {
|
1095
|
+
url_info = {
|
1096
|
+
url: data_url
|
1097
|
+
};
|
1098
|
+
if (node && node.id) {
|
1099
|
+
data = {
|
1100
|
+
node: node.id
|
1101
|
+
};
|
1102
|
+
url_info['data'] = data;
|
1031
1103
|
}
|
1104
|
+
return url_info;
|
1105
|
+
} else {
|
1032
1106
|
return data_url;
|
1033
1107
|
}
|
1034
1108
|
};
|
@@ -1078,11 +1152,11 @@ limitations under the License.
|
|
1078
1152
|
createUl = function(is_root_node) {
|
1079
1153
|
var class_string;
|
1080
1154
|
if (is_root_node) {
|
1081
|
-
class_string = '
|
1155
|
+
class_string = 'jqtree-tree';
|
1082
1156
|
} else {
|
1083
1157
|
class_string = '';
|
1084
1158
|
}
|
1085
|
-
return $("<ul" + class_string + "></ul>");
|
1159
|
+
return $("<ul class=\"jqtree_common " + class_string + "\"></ul>");
|
1086
1160
|
};
|
1087
1161
|
createLi = function(node) {
|
1088
1162
|
var $li;
|
@@ -1099,7 +1173,7 @@ limitations under the License.
|
|
1099
1173
|
createNodeLi = function(node) {
|
1100
1174
|
var escaped_name;
|
1101
1175
|
escaped_name = escapeIfNecessary(node.name);
|
1102
|
-
return $("<li><div><span class=\"jqtree-title\">" + escaped_name + "</span></div></li>");
|
1176
|
+
return $("<li class=\"jqtree_common\"><div><span class=\"jqtree-title jqtree_common\">" + escaped_name + "</span></div></li>");
|
1103
1177
|
};
|
1104
1178
|
createFolderLi = function(node) {
|
1105
1179
|
var button_char, button_classes, escaped_name, folder_classes, getButtonClasses, getFolderClasses;
|
@@ -1127,7 +1201,7 @@ limitations under the License.
|
|
1127
1201
|
} else {
|
1128
1202
|
button_char = TRIANGLE_RIGHT;
|
1129
1203
|
}
|
1130
|
-
return $("<li class=\"" + folder_classes + "\"><div><a class=\"" + button_classes + "\">" + button_char + "</a><span class=\"jqtree-title\">" + escaped_name + "</span></div></li>");
|
1204
|
+
return $("<li class=\"jqtree_common " + folder_classes + "\"><div><a class=\"jqtree_common " + button_classes + "\">" + button_char + "</a><span class=\"jqtree_common jqtree-title\">" + escaped_name + "</span></div></li>");
|
1131
1205
|
};
|
1132
1206
|
doCreateDomElements = function($element, children, is_root_node, is_open) {
|
1133
1207
|
var $li, $ul, child, _i, _len;
|
@@ -1161,26 +1235,30 @@ limitations under the License.
|
|
1161
1235
|
};
|
1162
1236
|
|
1163
1237
|
JqTreeWidget.prototype._click = function(e) {
|
1164
|
-
var $target, node;
|
1238
|
+
var $button, $target, $title, node;
|
1165
1239
|
if (e.ctrlKey) {
|
1166
1240
|
return;
|
1167
1241
|
}
|
1168
1242
|
$target = $(e.target);
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
this.toggle(node);
|
1173
|
-
e.preventDefault();
|
1174
|
-
return e.stopPropagation();
|
1175
|
-
}
|
1176
|
-
} else if ($target.is('div') || $target.is('span')) {
|
1177
|
-
node = this._getNode($target);
|
1243
|
+
$title = $target.closest('.jqtree-title');
|
1244
|
+
if ($title.length) {
|
1245
|
+
node = this._getNode($title);
|
1178
1246
|
if (node) {
|
1179
1247
|
this._triggerEvent('tree.click', {
|
1180
1248
|
node: node
|
1181
1249
|
});
|
1182
1250
|
return this.selectNode(node);
|
1183
1251
|
}
|
1252
|
+
} else {
|
1253
|
+
$button = $target.closest('.jqtree-toggler');
|
1254
|
+
if ($button.length) {
|
1255
|
+
node = this._getNode($button);
|
1256
|
+
if (node) {
|
1257
|
+
this.toggle(node, this.options.slide);
|
1258
|
+
e.preventDefault();
|
1259
|
+
return e.stopPropagation();
|
1260
|
+
}
|
1261
|
+
}
|
1184
1262
|
}
|
1185
1263
|
};
|
1186
1264
|
|
@@ -1252,8 +1330,11 @@ limitations under the License.
|
|
1252
1330
|
};
|
1253
1331
|
|
1254
1332
|
JqTreeWidget.prototype._mouseDrag = function(event) {
|
1333
|
+
var result;
|
1255
1334
|
if (this.options.dragAndDrop) {
|
1256
|
-
|
1335
|
+
result = this.dnd_handler.mouseDrag(event);
|
1336
|
+
this.scroll_handler.checkScrolling();
|
1337
|
+
return result;
|
1257
1338
|
} else {
|
1258
1339
|
return false;
|
1259
1340
|
}
|
@@ -1292,7 +1373,7 @@ limitations under the License.
|
|
1292
1373
|
function GhostDropHint(node, $element, position) {
|
1293
1374
|
this.$element = $element;
|
1294
1375
|
this.node = node;
|
1295
|
-
this.$ghost = $('<li class="jqtree-ghost"><span class="jqtree-circle"></span><span class="jqtree-line"></span></li>');
|
1376
|
+
this.$ghost = $('<li class="jqtree_common jqtree-ghost"><span class="jqtree_common jqtree-circle"></span><span class="jqtree_common jqtree-line"></span></li>');
|
1296
1377
|
if (position === Position.AFTER) {
|
1297
1378
|
this.moveAfter();
|
1298
1379
|
} else if (position === Position.BEFORE) {
|
@@ -1405,9 +1486,12 @@ limitations under the License.
|
|
1405
1486
|
return FolderElement.__super__.constructor.apply(this, arguments);
|
1406
1487
|
}
|
1407
1488
|
|
1408
|
-
FolderElement.prototype.open = function(on_finished,
|
1489
|
+
FolderElement.prototype.open = function(on_finished, slide) {
|
1409
1490
|
var $button, doOpen,
|
1410
1491
|
_this = this;
|
1492
|
+
if (slide == null) {
|
1493
|
+
slide = true;
|
1494
|
+
}
|
1411
1495
|
if (!this.node.is_open) {
|
1412
1496
|
this.node.is_open = true;
|
1413
1497
|
$button = this.getButton();
|
@@ -1422,18 +1506,21 @@ limitations under the License.
|
|
1422
1506
|
node: _this.node
|
1423
1507
|
});
|
1424
1508
|
};
|
1425
|
-
if (
|
1509
|
+
if (slide) {
|
1510
|
+
return this.getUl().slideDown('fast', doOpen);
|
1511
|
+
} else {
|
1426
1512
|
this.getUl().show();
|
1427
1513
|
return doOpen();
|
1428
|
-
} else {
|
1429
|
-
return this.getUl().slideDown('fast', doOpen);
|
1430
1514
|
}
|
1431
1515
|
}
|
1432
1516
|
};
|
1433
1517
|
|
1434
|
-
FolderElement.prototype.close = function(
|
1518
|
+
FolderElement.prototype.close = function(slide) {
|
1435
1519
|
var $button, doClose,
|
1436
1520
|
_this = this;
|
1521
|
+
if (slide == null) {
|
1522
|
+
slide = true;
|
1523
|
+
}
|
1437
1524
|
if (this.node.is_open) {
|
1438
1525
|
this.node.is_open = false;
|
1439
1526
|
$button = this.getButton();
|
@@ -1445,11 +1532,11 @@ limitations under the License.
|
|
1445
1532
|
node: _this.node
|
1446
1533
|
});
|
1447
1534
|
};
|
1448
|
-
if (
|
1535
|
+
if (slide) {
|
1536
|
+
return this.getUl().slideUp('fast', doClose);
|
1537
|
+
} else {
|
1449
1538
|
this.getUl().hide();
|
1450
1539
|
return doClose();
|
1451
|
-
} else {
|
1452
|
-
return this.getUl().slideUp('fast', doClose);
|
1453
1540
|
}
|
1454
1541
|
}
|
1455
1542
|
};
|
@@ -1595,13 +1682,10 @@ limitations under the License.
|
|
1595
1682
|
this.tree_widget = tree_widget;
|
1596
1683
|
}
|
1597
1684
|
|
1598
|
-
SelectNodeHandler.prototype.selectNode = function(node
|
1685
|
+
SelectNodeHandler.prototype.selectNode = function(node) {
|
1599
1686
|
var canSelect, parent,
|
1600
1687
|
_this = this;
|
1601
1688
|
canSelect = function() {
|
1602
|
-
if (!_this.tree_widget.options.selectable) {
|
1603
|
-
return false;
|
1604
|
-
}
|
1605
1689
|
if (!_this.tree_widget.options.onCanSelectNode) {
|
1606
1690
|
return true;
|
1607
1691
|
}
|
@@ -1618,14 +1702,9 @@ limitations under the License.
|
|
1618
1702
|
this.tree_widget._triggerEvent('tree.select', {
|
1619
1703
|
node: node
|
1620
1704
|
});
|
1621
|
-
|
1622
|
-
|
1623
|
-
|
1624
|
-
if (!parent.is_open) {
|
1625
|
-
this.tree_widget.openNode(parent, true);
|
1626
|
-
}
|
1627
|
-
parent = parent.parent;
|
1628
|
-
}
|
1705
|
+
parent = this.tree_widget.selected_node.parent;
|
1706
|
+
if (!parent.is_open) {
|
1707
|
+
this.tree_widget.openNode(parent, false);
|
1629
1708
|
}
|
1630
1709
|
}
|
1631
1710
|
if (this.tree_widget.options.saveState) {
|
@@ -1935,7 +2014,7 @@ limitations under the License.
|
|
1935
2014
|
var openFolder,
|
1936
2015
|
_this = this;
|
1937
2016
|
openFolder = function() {
|
1938
|
-
return _this.tree_widget._openNode(folder,
|
2017
|
+
return _this.tree_widget._openNode(folder, _this.tree_widget.options.slide, function() {
|
1939
2018
|
_this.refreshHitAreas();
|
1940
2019
|
return _this.updateDropHint();
|
1941
2020
|
});
|
@@ -1985,6 +2064,88 @@ limitations under the License.
|
|
1985
2064
|
|
1986
2065
|
})();
|
1987
2066
|
|
1988
|
-
|
2067
|
+
ScrollHandler = (function() {
|
2068
|
+
|
2069
|
+
function ScrollHandler(tree_widget) {
|
2070
|
+
this.tree_widget = tree_widget;
|
2071
|
+
this.previous_top = -1;
|
2072
|
+
this._initScrollParent();
|
2073
|
+
}
|
2074
|
+
|
2075
|
+
ScrollHandler.prototype._initScrollParent = function() {
|
2076
|
+
var $scroll_parent, getParentWithOverflow, setDocumentAsScrollParent,
|
2077
|
+
_this = this;
|
2078
|
+
getParentWithOverflow = function() {
|
2079
|
+
var css_value, css_values, parent, scroll_parent, _i, _j, _len, _len1, _ref, _ref1;
|
2080
|
+
css_values = ['overflow', 'overflow-y'];
|
2081
|
+
scroll_parent = null;
|
2082
|
+
_ref = _this.tree_widget.$el.parents();
|
2083
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
2084
|
+
parent = _ref[_i];
|
2085
|
+
for (_j = 0, _len1 = css_values.length; _j < _len1; _j++) {
|
2086
|
+
css_value = css_values[_j];
|
2087
|
+
if ((_ref1 = $.css(parent, css_value)) === 'auto' || _ref1 === 'scroll') {
|
2088
|
+
return $(parent);
|
2089
|
+
}
|
2090
|
+
}
|
2091
|
+
}
|
2092
|
+
return null;
|
2093
|
+
};
|
2094
|
+
setDocumentAsScrollParent = function() {
|
2095
|
+
_this.scroll_parent_top = 0;
|
2096
|
+
return _this.$scroll_parent = null;
|
2097
|
+
};
|
2098
|
+
if (this.tree_widget.$el.css('position') === 'fixed') {
|
2099
|
+
setDocumentAsScrollParent();
|
2100
|
+
}
|
2101
|
+
$scroll_parent = getParentWithOverflow();
|
2102
|
+
if ($scroll_parent && $scroll_parent.length && $scroll_parent[0].tagName !== 'HTML') {
|
2103
|
+
this.$scroll_parent = $scroll_parent;
|
2104
|
+
return this.scroll_parent_top = this.$scroll_parent.offset().top;
|
2105
|
+
} else {
|
2106
|
+
return setDocumentAsScrollParent();
|
2107
|
+
}
|
2108
|
+
};
|
2109
|
+
|
2110
|
+
ScrollHandler.prototype.checkScrolling = function() {
|
2111
|
+
var hovered_area;
|
2112
|
+
hovered_area = this.tree_widget.dnd_handler.hovered_area;
|
2113
|
+
if (hovered_area && hovered_area.top !== this.previous_top) {
|
2114
|
+
this.previous_top = hovered_area.top;
|
2115
|
+
if (this.$scroll_parent) {
|
2116
|
+
return this._handleScrollingWithScrollParent(hovered_area);
|
2117
|
+
} else {
|
2118
|
+
return this._handleScrollingWithDocument(hovered_area);
|
2119
|
+
}
|
2120
|
+
}
|
2121
|
+
};
|
2122
|
+
|
2123
|
+
ScrollHandler.prototype._handleScrollingWithScrollParent = function(area) {
|
2124
|
+
var distance_bottom;
|
2125
|
+
distance_bottom = this.scroll_parent_top + this.$scroll_parent[0].offsetHeight - area.bottom;
|
2126
|
+
if (distance_bottom < 20) {
|
2127
|
+
this.$scroll_parent[0].scrollTop += 20;
|
2128
|
+
this.tree_widget.refreshHitAreas();
|
2129
|
+
return this.previous_top = -1;
|
2130
|
+
} else if ((area.top - this.scroll_parent_top) < 20) {
|
2131
|
+
this.$scroll_parent[0].scrollTop -= 20;
|
2132
|
+
this.tree_widget.refreshHitAreas();
|
2133
|
+
return this.previous_top = -1;
|
2134
|
+
}
|
2135
|
+
};
|
2136
|
+
|
2137
|
+
ScrollHandler.prototype._handleScrollingWithDocument = function(area) {
|
2138
|
+
var distance_top;
|
2139
|
+
distance_top = area.top - $(document).scrollTop();
|
2140
|
+
if (distance_top < 20) {
|
2141
|
+
return $(document).scrollTop($(document).scrollTop() - 20);
|
2142
|
+
} else if ($(window).height() - (area.bottom - $(document).scrollTop()) < 20) {
|
2143
|
+
return $(document).scrollTop($(document).scrollTop() + 20);
|
2144
|
+
}
|
2145
|
+
};
|
2146
|
+
|
2147
|
+
return ScrollHandler;
|
2148
|
+
|
2149
|
+
})();
|
1989
2150
|
|
1990
2151
|
}).call(this);
|
@@ -3,26 +3,24 @@ ul.jqtree-tree {
|
|
3
3
|
}
|
4
4
|
|
5
5
|
ul.jqtree-tree,
|
6
|
-
ul.jqtree-tree ul {
|
6
|
+
ul.jqtree-tree ul.jqtree_common {
|
7
7
|
list-style: none outside;
|
8
8
|
margin-bottom: 0;
|
9
9
|
padding: 0;
|
10
10
|
}
|
11
11
|
|
12
|
-
ul.jqtree-tree ul {
|
12
|
+
ul.jqtree-tree ul.jqtree_common {
|
13
13
|
display: block;
|
14
14
|
margin-left: 12px;
|
15
15
|
margin-right: 0;
|
16
16
|
}
|
17
|
-
|
18
|
-
ul.jqtree-tree li.jqtree-closed > ul {
|
17
|
+
ul.jqtree-tree li.jqtree-closed > ul.jqtree_common {
|
19
18
|
display: none;
|
20
19
|
}
|
21
20
|
|
22
|
-
ul.jqtree-tree li {
|
21
|
+
ul.jqtree-tree li.jqtree_common {
|
23
22
|
clear: both;
|
24
23
|
}
|
25
|
-
|
26
24
|
ul.jqtree-tree .jqtree-toggler {
|
27
25
|
display: block;
|
28
26
|
position: absolute;
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jqtree-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.3
|
5
4
|
prerelease:
|
5
|
+
version: 0.1.4.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ryan Scott Lewis
|
@@ -10,12 +10,10 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-12-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
16
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
17
|
requirements:
|
20
18
|
- - ! '>='
|
21
19
|
- !ruby/object:Gem::Version
|
@@ -23,10 +21,11 @@ dependencies:
|
|
23
21
|
- - <
|
24
22
|
- !ruby/object:Gem::Version
|
25
23
|
version: '5.0'
|
24
|
+
none: false
|
25
|
+
name: railties
|
26
26
|
type: :runtime
|
27
27
|
prerelease: false
|
28
|
-
|
29
|
-
none: false
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
30
29
|
requirements:
|
31
30
|
- - ! '>='
|
32
31
|
- !ruby/object:Gem::Version
|
@@ -34,41 +33,42 @@ dependencies:
|
|
34
33
|
- - <
|
35
34
|
- !ruby/object:Gem::Version
|
36
35
|
version: '5.0'
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: thor
|
39
|
-
requirement: !ruby/object:Gem::Requirement
|
40
36
|
none: false
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
39
|
requirements:
|
42
40
|
- - ~>
|
43
41
|
- !ruby/object:Gem::Version
|
44
42
|
version: '0.14'
|
43
|
+
none: false
|
44
|
+
name: thor
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
|
48
|
-
none: false
|
47
|
+
requirement: !ruby/object:Gem::Requirement
|
49
48
|
requirements:
|
50
49
|
- - ~>
|
51
50
|
- !ruby/object:Gem::Version
|
52
51
|
version: '0.14'
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: version
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
56
52
|
none: false
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
55
|
requirements:
|
58
56
|
- - ~>
|
59
57
|
- !ruby/object:Gem::Version
|
60
58
|
version: '1.0'
|
59
|
+
none: false
|
60
|
+
name: version
|
61
61
|
type: :runtime
|
62
62
|
prerelease: false
|
63
|
-
|
64
|
-
none: false
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
65
64
|
requirements:
|
66
65
|
- - ~>
|
67
66
|
- !ruby/object:Gem::Version
|
68
67
|
version: '1.0'
|
68
|
+
none: false
|
69
69
|
description: This gem provides jqTree assets for your Rails 3 application.
|
70
70
|
email:
|
71
|
-
-
|
71
|
+
- ryan@rynet.us
|
72
72
|
- uher.mario@gmail.com
|
73
73
|
executables: []
|
74
74
|
extensions: []
|
@@ -91,24 +91,24 @@ files:
|
|
91
91
|
- vendor/assets/images/jqtree-circle.png
|
92
92
|
- vendor/assets/javascripts/tree.jquery.js
|
93
93
|
- vendor/assets/stylesheets/jqtree.css
|
94
|
-
homepage:
|
94
|
+
homepage: https://github.com/RyanScottLewis/jqtree-rails
|
95
95
|
licenses: []
|
96
96
|
post_install_message:
|
97
97
|
rdoc_options: []
|
98
98
|
require_paths:
|
99
99
|
- lib
|
100
100
|
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
-
none: false
|
102
101
|
requirements:
|
103
102
|
- - ! '>='
|
104
103
|
- !ruby/object:Gem::Version
|
105
104
|
version: '0'
|
106
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
105
|
none: false
|
106
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
107
|
requirements:
|
109
108
|
- - ! '>='
|
110
109
|
- !ruby/object:Gem::Version
|
111
110
|
version: 1.3.6
|
111
|
+
none: false
|
112
112
|
requirements: []
|
113
113
|
rubyforge_project:
|
114
114
|
rubygems_version: 1.8.23
|
@@ -116,4 +116,3 @@ signing_key:
|
|
116
116
|
specification_version: 3
|
117
117
|
summary: Use jqTree with Rails 3
|
118
118
|
test_files: []
|
119
|
-
has_rdoc:
|