fancytree-rails 2.0.0.pre.6.pre.1 → 2.0.0.pre.11.pre.1

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/Rakefile +6 -7
  4. data/lib/fancytree/rails/version.rb +2 -2
  5. data/vendor/assets/images/fancytree/skin-win8-xxl/icons.gif +0 -0
  6. data/vendor/assets/images/fancytree/skin-win8-xxl/loading.gif +0 -0
  7. data/vendor/assets/javascripts/fancytree.js +1 -1
  8. data/vendor/assets/javascripts/fancytree/MIT-LICENSE.txt +21 -0
  9. data/vendor/assets/javascripts/fancytree/jquery.fancytree-all.js +1267 -475
  10. data/vendor/assets/javascripts/fancytree/jquery.fancytree-custom.min.js +41 -0
  11. data/vendor/assets/javascripts/fancytree/jquery.fancytree.js +582 -310
  12. data/vendor/assets/javascripts/fancytree/jquery.fancytree.min.js +14 -7
  13. data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.childcounter.js +185 -0
  14. data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.clones.js +417 -0
  15. data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.columnview.js +149 -0
  16. data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.debug.js +142 -0
  17. data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.dnd.js +539 -0
  18. data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.edit.js +318 -0
  19. data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.filter.js +173 -0
  20. data/vendor/assets/javascripts/fancytree/{jquery.fancytree.awesome.js → src/jquery.fancytree.glyph.js} +28 -26
  21. data/vendor/assets/javascripts/fancytree/{jquery.fancytree.gridnav.js → src/jquery.fancytree.gridnav.js} +77 -41
  22. data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.js +4027 -0
  23. data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.menu.js +155 -0
  24. data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.persist.js +345 -0
  25. data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.table.js +345 -0
  26. data/vendor/assets/javascripts/fancytree/src/jquery.fancytree.themeroller.js +82 -0
  27. data/vendor/assets/stylesheets/fancytree/skin-awesome/ui.fancytree.css +29 -15
  28. data/vendor/assets/stylesheets/fancytree/skin-awesome/ui.fancytree.min.css +1 -1
  29. data/vendor/assets/stylesheets/fancytree/skin-bootstrap/ui.fancytree.css +366 -0
  30. data/vendor/assets/stylesheets/fancytree/skin-bootstrap/ui.fancytree.min.css +6 -0
  31. data/vendor/assets/stylesheets/fancytree/skin-lion/ui.fancytree.css +34 -7
  32. data/vendor/assets/stylesheets/fancytree/skin-lion/ui.fancytree.min.css +1 -1
  33. data/vendor/assets/stylesheets/fancytree/skin-vista/ui.fancytree.css +34 -7
  34. data/vendor/assets/stylesheets/fancytree/skin-vista/ui.fancytree.min.css +1 -1
  35. data/vendor/assets/stylesheets/fancytree/skin-win7/ui.fancytree.css +34 -7
  36. data/vendor/assets/stylesheets/fancytree/skin-win7/ui.fancytree.min.css +1 -1
  37. data/vendor/assets/stylesheets/fancytree/skin-win8-xxl/ui.fancytree.css +507 -0
  38. data/vendor/assets/stylesheets/fancytree/skin-win8-xxl/ui.fancytree.min.css +11 -0
  39. data/vendor/assets/stylesheets/fancytree/skin-win8/ui.fancytree.css +34 -7
  40. data/vendor/assets/stylesheets/fancytree/skin-win8/ui.fancytree.min.css +1 -1
  41. data/vendor/assets/stylesheets/fancytree/skin-xp/ui.fancytree.css +34 -7
  42. data/vendor/assets/stylesheets/fancytree/skin-xp/ui.fancytree.min.css +1 -1
  43. metadata +24 -13
  44. data/vendor/assets/javascripts/fancytree/jquery.fancytree-all.min.js +0 -7
  45. data/vendor/assets/javascripts/fancytree/jquery.fancytree-all.min.js.map +0 -1
  46. data/vendor/assets/javascripts/fancytree/jquery.fancytree.min.js.map +0 -1
  47. data/vendor/assets/stylesheets/fancytree/skin-lion/ui.fancytree-org.css +0 -460
  48. data/vendor/assets/stylesheets/fancytree/skin-themeroller/ui.fancytree-org.css +0 -505
  49. data/vendor/assets/stylesheets/fancytree/skin-vista/ui.fancytree-org.css +0 -610
  50. data/vendor/assets/stylesheets/fancytree/skin-win7/ui.fancytree-org.css +0 -592
  51. data/vendor/assets/stylesheets/fancytree/skin-win8/ui.fancytree-org.css +0 -602
  52. data/vendor/assets/stylesheets/fancytree/skin-xp/ui.fancytree-org.css +0 -578
@@ -0,0 +1,318 @@
1
+ /*!
2
+ * jquery.fancytree.edit.js
3
+ *
4
+ * Make node titles editable.
5
+ * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
6
+ *
7
+ * Copyright (c) 2014, Martin Wendt (http://wwWendt.de)
8
+ *
9
+ * Released under the MIT license
10
+ * https://github.com/mar10/fancytree/wiki/LicenseInfo
11
+ *
12
+ * @version 2.0.0-11
13
+ * @date 2014-04-27T22:28
14
+ */
15
+
16
+ ;(function($, window, document, undefined) {
17
+
18
+ "use strict";
19
+
20
+
21
+ /*******************************************************************************
22
+ * Private functions and variables
23
+ */
24
+
25
+ var isMac = /Mac/.test(navigator.platform),
26
+ escapeHtml = $.ui.fancytree.escapeHtml,
27
+ unescapeHtml = $.ui.fancytree.unescapeHtml;
28
+ // modifiers = {shift: "shiftKey", ctrl: "ctrlKey", alt: "altKey", meta: "metaKey"},
29
+ // specialKeys = {
30
+ // 8: "backspace", 9: "tab", 10: "return", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
31
+ // 20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
32
+ // 37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del",
33
+ // 96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
34
+ // 104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/",
35
+ // 112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8",
36
+ // 120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 186: ";", 191: "/",
37
+ // 220: "\\", 222: "'", 224: "meta"
38
+ // },
39
+ // shiftNums = {
40
+ // "`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
41
+ // "8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
42
+ // ".": ">", "/": "?", "\\": "|"
43
+ // };
44
+
45
+
46
+ // $.ui.fancytree.isKeydownEvent = function(e, code){
47
+ // var i, part, partmap, partlist = code.split("+"), len = parts.length;
48
+ // var c = String.fromCharCode(e.which).toLowerCase();
49
+ // for( i = 0; i < len; i++ ) {
50
+ // }
51
+ // alert (parts.unshift());
52
+ // alert (parts.unshift());
53
+ // alert (parts.unshift());
54
+ // };
55
+
56
+
57
+ /**
58
+ * [ext-edit] Start inline editing of current node title.
59
+ *
60
+ * @alias FancytreeNode#editStart
61
+ * @requires Fancytree
62
+ */
63
+ $.ui.fancytree._FancytreeNodeClass.prototype.editStart = function(){
64
+ var $input,
65
+ node = this,
66
+ tree = this.tree,
67
+ local = tree.ext.edit,
68
+ prevTitle = node.title,
69
+ instOpts = tree.options.edit,
70
+ $title = $(".fancytree-title", node.span),
71
+ eventData = {node: node, tree: tree, options: tree.options};
72
+
73
+ if( instOpts.beforeEdit.call(node, {type: "beforeEdit"}, eventData) === false){
74
+ return false;
75
+ }
76
+ // beforeEdit may want to modify the title before editing
77
+ prevTitle = node.title;
78
+
79
+ node.debug("editStart");
80
+ // Disable standard Fancytree mouse- and key handling
81
+ tree.widget._unbind();
82
+ // #116: ext-dnd prevents the blur event, so we have to catch outer clicks
83
+ $(document).on("mousedown.fancytree-edit", function(event){
84
+ if( ! $(event.target).hasClass("fancytree-edit-input") ){
85
+ node.editEnd(true, event);
86
+ }
87
+ });
88
+
89
+ // Replace node with <input>
90
+ $input = $("<input />", {
91
+ "class": "fancytree-edit-input",
92
+ value: unescapeHtml(prevTitle)
93
+ });
94
+ if ( instOpts.adjustWidthOfs != null ) {
95
+ $input.width($title.width() + instOpts.adjustWidthOfs);
96
+ }
97
+ if ( instOpts.inputCss != null ) {
98
+ $input.css(instOpts.inputCss);
99
+ }
100
+ eventData.input = $input;
101
+
102
+ $title.html($input);
103
+
104
+ $.ui.fancytree.assert(!local.currentNode, "recursive edit");
105
+ local.currentNode = this;
106
+ // Focus <input> and bind keyboard handler
107
+ $input
108
+ .focus()
109
+ .change(function(event){
110
+ $input.addClass("fancytree-edit-dirty");
111
+ }).keydown(function(event){
112
+ switch( event.which ) {
113
+ case $.ui.keyCode.ESCAPE:
114
+ node.editEnd(false, event);
115
+ break;
116
+ case $.ui.keyCode.ENTER:
117
+ node.editEnd(true, event);
118
+ return false; // so we don't start editmode on Mac
119
+ }
120
+ }).blur(function(event){
121
+ return node.editEnd(true, event);
122
+ });
123
+
124
+ instOpts.edit.call(node, {type: "edit"}, eventData);
125
+ };
126
+
127
+
128
+ /**
129
+ * [ext-edit] Stop inline editing.
130
+ * @param {Boolean} [applyChanges=false]
131
+ * @alias FancytreeNode#editEnd
132
+ * @requires jquery.fancytree.edit.js
133
+ */
134
+ $.ui.fancytree._FancytreeNodeClass.prototype.editEnd = function(applyChanges, _event){
135
+ var node = this,
136
+ tree = this.tree,
137
+ local = tree.ext.edit,
138
+ instOpts = tree.options.edit,
139
+ $title = $(".fancytree-title", node.span),
140
+ $input = $title.find("input.fancytree-edit-input"),
141
+ newVal = $input.val(),
142
+ dirty = $input.hasClass("fancytree-edit-dirty"),
143
+ doSave = (applyChanges || (dirty && applyChanges !== false)) && (newVal !== node.title),
144
+ eventData = {
145
+ node: node, tree: tree, options: tree.options, originalEvent: _event,
146
+ dirty: dirty,
147
+ save: doSave,
148
+ input: $input,
149
+ value: newVal
150
+ };
151
+
152
+ if( instOpts.beforeClose.call(node, {type: "beforeClose"}, eventData) === false){
153
+ return false;
154
+ }
155
+ if( doSave && instOpts.save.call(node, {type: "save"}, eventData) === false){
156
+ return false;
157
+ }
158
+ $input
159
+ .removeClass("fancytree-edit-dirty")
160
+ .unbind();
161
+ // Unbind outer-click handler
162
+ $(document).off(".fancytree-edit");
163
+
164
+ if( doSave ) {
165
+ node.setTitle( escapeHtml(newVal) );
166
+ }else{
167
+ node.renderTitle();
168
+ }
169
+ // Re-enable mouse and keyboard handling
170
+ tree.widget._bind();
171
+ local.currentNode = null;
172
+ node.setFocus();
173
+ // Set keyboard focus, even if setFocus() claims 'nothing to do'
174
+ $(tree.$container).focus();
175
+ eventData.input = null;
176
+ instOpts.close.call(node, {type: "close"}, eventData);
177
+ return true;
178
+ };
179
+
180
+
181
+ $.ui.fancytree._FancytreeNodeClass.prototype.startEdit = function(){
182
+ this.warn("FancytreeNode.startEdit() is deprecated since 2014-01-04. Use .editStart() instead.");
183
+ return this.editStart.apply(this, arguments);
184
+ };
185
+
186
+
187
+ $.ui.fancytree._FancytreeNodeClass.prototype.endEdit = function(){
188
+ this.warn("FancytreeNode.endEdit() is deprecated since 2014-01-04. Use .editEnd() instead.");
189
+ return this.editEnd.apply(this, arguments);
190
+ };
191
+
192
+
193
+ ///**
194
+ // * Create a new child or sibling node.
195
+ // *
196
+ // * @param {String} [mode] 'before', 'after', or 'child'
197
+ // * @lends FancytreeNode.prototype
198
+ // * @requires jquery.fancytree.edit.js
199
+ // */
200
+ //$.ui.fancytree._FancytreeNodeClass.prototype.editCreateNode = function(mode){
201
+ // var newNode,
202
+ // node = this,
203
+ // tree = this.tree,
204
+ // local = tree.ext.edit,
205
+ // instOpts = tree.options.edit,
206
+ // $title = $(".fancytree-title", node.span),
207
+ // $input = $title.find("input.fancytree-edit-input"),
208
+ // newVal = $input.val(),
209
+ // dirty = $input.hasClass("fancytree-edit-dirty"),
210
+ // doSave = (applyChanges || (dirty && applyChanges !== false)) && (newVal !== node.title),
211
+ // eventData = {
212
+ // node: node, tree: tree, options: tree.options, originalEvent: _event,
213
+ // dirty: dirty,
214
+ // save: doSave,
215
+ // input: $input,
216
+ // value: newVal
217
+ // };
218
+ //
219
+ // node.debug("editCreate");
220
+ //
221
+ // if( instOpts.beforeEdit.call(node, {type: "beforeCreateNode"}, eventData) === false){
222
+ // return false;
223
+ // }
224
+ // newNode = this.addNode({title: "Neuer Knoten"}, mode);
225
+ //
226
+ // newNode.editStart();
227
+ //};
228
+
229
+
230
+ /**
231
+ * [ext-edit] Check if any node in this tree in edit mode.
232
+ *
233
+ * @returns {FancytreeNode | null}
234
+ * @lends Fancytree.prototype
235
+ * @requires jquery.fancytree.edit.js
236
+ */
237
+ $.ui.fancytree._FancytreeClass.prototype.isEditing = function(){
238
+ return this.ext.edit.currentNode;
239
+ };
240
+
241
+
242
+ /**
243
+ * [ext-edit] Check if this node is in edit mode.
244
+ * @returns {Boolean} true if node is currently beeing edited
245
+ * @lends FancytreeNode.prototype
246
+ * @requires jquery.fancytree.edit.js
247
+ */
248
+ $.ui.fancytree._FancytreeNodeClass.prototype.isEditing = function(){
249
+ return this.tree.ext.edit.currentNode === this;
250
+ };
251
+
252
+
253
+ /*******************************************************************************
254
+ * Extension code
255
+ */
256
+ $.ui.fancytree.registerExtension({
257
+ name: "edit",
258
+ version: "0.1.0",
259
+ // Default options for this extension.
260
+ options: {
261
+ adjustWidthOfs: 4, // null: don't adjust input size to content
262
+ inputCss: {minWidth: "3em"},
263
+ triggerCancel: ["esc", "tab", "click"],
264
+ // triggerStart: ["f2", "dblclick", "shift+click", "mac+enter"],
265
+ triggerStart: ["f2", "shift+click", "mac+enter"],
266
+ beforeClose: $.noop, // Return false to prevent cancel/save (data.input is available)
267
+ beforeEdit: $.noop, // Return false to prevent edit mode
268
+ close: $.noop, // Editor was removed
269
+ edit: $.noop, // Editor was opened (available as data.input)
270
+ // keypress: $.noop, // Not yet implemented
271
+ save: $.noop // Save data.input.val() or return false to keep editor open
272
+ },
273
+ // Local attributes
274
+ currentNode: null,
275
+
276
+ // Override virtual methods for this extension.
277
+ // `this` : the Fancytree instance
278
+ // `this._local`: the namespace that contains extension attributes and private methods (same as this.ext.EXTNAME)
279
+ // `this._super`: the virtual function that was overridden (member of previous extension or Fancytree)
280
+ treeInit: function(ctx){
281
+ this._super(ctx);
282
+ this.$container.addClass("fancytree-ext-edit");
283
+ },
284
+ nodeClick: function(ctx) {
285
+ if( $.inArray("shift+click", ctx.options.edit.triggerStart) >= 0 ){
286
+ if( ctx.originalEvent.shiftKey ){
287
+ ctx.node.editStart();
288
+ return false;
289
+ }
290
+ }
291
+ this._super(ctx);
292
+ },
293
+ nodeDblclick: function(ctx) {
294
+ if( $.inArray("dblclick", ctx.options.edit.triggerStart) >= 0 ){
295
+ ctx.node.editStart();
296
+ return false;
297
+ }
298
+ return this._super(ctx);
299
+ },
300
+ nodeKeydown: function(ctx) {
301
+ switch( ctx.originalEvent.which ) {
302
+ case 113: // [F2]
303
+ if( $.inArray("f2", ctx.options.edit.triggerStart) >= 0 ){
304
+ ctx.node.editStart();
305
+ return false;
306
+ }
307
+ break;
308
+ case $.ui.keyCode.ENTER:
309
+ if( $.inArray("mac+enter", ctx.options.edit.triggerStart) >= 0 && isMac ){
310
+ ctx.node.editStart();
311
+ return false;
312
+ }
313
+ break;
314
+ }
315
+ return this._super(ctx);
316
+ }
317
+ });
318
+ }(jQuery, window, document));
@@ -0,0 +1,173 @@
1
+ /*!
2
+ * jquery.fancytree.filter.js
3
+ *
4
+ * Remove or highlight tree nodes, based on a filter.
5
+ * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
6
+ *
7
+ * Copyright (c) 2014, Martin Wendt (http://wwWendt.de)
8
+ *
9
+ * Released under the MIT license
10
+ * https://github.com/mar10/fancytree/wiki/LicenseInfo
11
+ *
12
+ * @version 2.0.0-11
13
+ * @date 2014-04-27T22:28
14
+ */
15
+
16
+ ;(function($, window, document, undefined) {
17
+
18
+ "use strict";
19
+
20
+
21
+ /*******************************************************************************
22
+ * Private functions and variables
23
+ */
24
+
25
+ function _escapeRegex(str){
26
+ /*jshint regexdash:true */
27
+ return (str + "").replace(/([.?*+\^\$\[\]\\(){}|-])/g, "\\$1");
28
+ }
29
+
30
+ /* EXT-TABLE: Show/hide all rows that are structural descendants of `parent`. */
31
+ // function setChildRowVisibility(parent, flag) {
32
+ // parent.visit(function(node){
33
+ // var tr = node.tr;
34
+ // if(tr){
35
+ // tr.style.display = flag ? "" : "none";
36
+ // }
37
+ // node.debug(flag ? "SHOW" : "HIDE");
38
+ // if(!node.expanded){
39
+ // return "skip";
40
+ // }
41
+ // });
42
+ // }
43
+
44
+ /**
45
+ * [ext-filter] Dimm or hide nodes.
46
+ *
47
+ * @param {function | string} filter
48
+ * @returns {integer} count
49
+ * @alias Fancytree#applyFilter
50
+ * @requires jquery.fancytree.filter.js
51
+ */
52
+ $.ui.fancytree._FancytreeClass.prototype.applyFilter = function(filter){
53
+ var match, re,
54
+ count = 0,
55
+ hideMode = this.options.filter.mode === "hide",
56
+ leavesOnly = this.options.filter.leavesOnly;
57
+
58
+ // Default to 'match title substring (not case sensitive)'
59
+ if(typeof filter === "string"){
60
+ match = _escapeRegex(filter); // make sure a '.' is treated literally
61
+ re = new RegExp(".*" + match + ".*", "i");
62
+ filter = function(node){
63
+ return !!re.exec(node.title);
64
+ };
65
+ }
66
+
67
+ this.enableFilter = true;
68
+ this.$div.addClass("fancytree-ext-filter");
69
+ if( hideMode ){
70
+ this.$div.addClass("fancytree-ext-filter-hide");
71
+ } else {
72
+ this.$div.addClass("fancytree-ext-filter-dimm");
73
+ }
74
+ // Reset current filter
75
+ this.visit(function(node){
76
+ // node.hide = hideMode && true;
77
+ delete node.match;
78
+ delete node.subMatch;
79
+ });
80
+ // Adjust node.hide, .match, .subMatch flags
81
+ this.visit(function(node){
82
+ if ((!leavesOnly || node.children == null) && filter(node)) {
83
+ count++;
84
+ // node.hide = false;
85
+ node.match = true;
86
+ node.visitParents(function(p){
87
+ // p.hide = false;
88
+ p.subMatch = true;
89
+ });
90
+ }
91
+ });
92
+ // Redraw
93
+ this.render();
94
+ return count;
95
+ };
96
+
97
+ /**
98
+ * [ext-filter] Reset the filter.
99
+ *
100
+ * @alias Fancytree#applyFilter
101
+ * @requires jquery.fancytree.filter.js
102
+ */
103
+ $.ui.fancytree._FancytreeClass.prototype.clearFilter = function(){
104
+ this.visit(function(node){
105
+ // delete node.hide;
106
+ delete node.match;
107
+ delete node.subMatch;
108
+ });
109
+ this.enableFilter = false;
110
+ this.$div.removeClass("fancytree-ext-filter fancytree-ext-filter-dimm fancytree-ext-filter-hide");
111
+ this.render();
112
+ };
113
+
114
+
115
+ /*******************************************************************************
116
+ * Extension code
117
+ */
118
+ $.ui.fancytree.registerExtension({
119
+ name: "filter",
120
+ version: "0.0.2",
121
+ // Default options for this extension.
122
+ options: {
123
+ mode: "dimm",
124
+ leavesOnly: false
125
+ },
126
+ // Override virtual methods for this extension.
127
+ // `this` : is this extension object
128
+ // `this._base` : the Fancytree instance
129
+ // `this._super`: the virtual function that was overriden (member of prev. extension or Fancytree)
130
+ treeInit: function(ctx){
131
+ this._super(ctx);
132
+ // ctx.tree.filter = false;
133
+ },
134
+ treeDestroy: function(ctx){
135
+ this._super(ctx);
136
+ },
137
+ nodeRenderStatus: function(ctx) {
138
+ // Set classes for current status
139
+ var res,
140
+ node = ctx.node,
141
+ tree = ctx.tree,
142
+ $span = $(node[tree.statusClassPropName]);
143
+
144
+ res = this._super(ctx);
145
+
146
+ if(!$span.length){
147
+ return res; // nothing to do, if node was not yet rendered
148
+ }
149
+ if(!tree.enableFilter){
150
+ return res;
151
+ }
152
+ $span.toggleClass("fancytree-match", !!node.match);
153
+ $span.toggleClass("fancytree-submatch", !!node.subMatch);
154
+ $span.toggleClass("fancytree-hide", !(node.match || node.subMatch));
155
+
156
+ // if(opts.filter.mode === "hide"){
157
+ // // visible = !!(node.match || node.subMatch);
158
+ // visible = !node.hide;
159
+ // node.debug(node.title + ": visible=" + visible);
160
+ // if( node.li ) {
161
+ // $(node.li).toggle(visible);
162
+ // } else if( node.tr ) {
163
+ // // Show/hide all rows that are structural descendants of `parent`
164
+ // $(node.tr).toggle(visible);
165
+ // // if( !visible ) {
166
+ // // setChildRowVisibility(node, visible);
167
+ // // }
168
+ // }
169
+ // }
170
+ return res;
171
+ }
172
+ });
173
+ }(jQuery, window, document));