annotate vakata-jstree-3.3.5/src/jstree.wholerow.js @ 5:aacd5f53ac99 draft

v2.0.0
author mingchen0919
date Wed, 18 Apr 2018 13:17:28 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
mingchen0919
parents:
diff changeset
1 /**
mingchen0919
parents:
diff changeset
2 * ### Wholerow plugin
mingchen0919
parents:
diff changeset
3 *
mingchen0919
parents:
diff changeset
4 * Makes each node appear block level. Making selection easier. May cause slow down for large trees in old browsers.
mingchen0919
parents:
diff changeset
5 */
mingchen0919
parents:
diff changeset
6 /*globals jQuery, define, exports, require */
mingchen0919
parents:
diff changeset
7 (function (factory) {
mingchen0919
parents:
diff changeset
8 "use strict";
mingchen0919
parents:
diff changeset
9 if (typeof define === 'function' && define.amd) {
mingchen0919
parents:
diff changeset
10 define('jstree.wholerow', ['jquery','jstree'], factory);
mingchen0919
parents:
diff changeset
11 }
mingchen0919
parents:
diff changeset
12 else if(typeof exports === 'object') {
mingchen0919
parents:
diff changeset
13 factory(require('jquery'), require('jstree'));
mingchen0919
parents:
diff changeset
14 }
mingchen0919
parents:
diff changeset
15 else {
mingchen0919
parents:
diff changeset
16 factory(jQuery, jQuery.jstree);
mingchen0919
parents:
diff changeset
17 }
mingchen0919
parents:
diff changeset
18 }(function ($, jstree, undefined) {
mingchen0919
parents:
diff changeset
19 "use strict";
mingchen0919
parents:
diff changeset
20
mingchen0919
parents:
diff changeset
21 if($.jstree.plugins.wholerow) { return; }
mingchen0919
parents:
diff changeset
22
mingchen0919
parents:
diff changeset
23 var div = document.createElement('DIV');
mingchen0919
parents:
diff changeset
24 div.setAttribute('unselectable','on');
mingchen0919
parents:
diff changeset
25 div.setAttribute('role','presentation');
mingchen0919
parents:
diff changeset
26 div.className = 'jstree-wholerow';
mingchen0919
parents:
diff changeset
27 div.innerHTML = ' ';
mingchen0919
parents:
diff changeset
28 $.jstree.plugins.wholerow = function (options, parent) {
mingchen0919
parents:
diff changeset
29 this.bind = function () {
mingchen0919
parents:
diff changeset
30 parent.bind.call(this);
mingchen0919
parents:
diff changeset
31
mingchen0919
parents:
diff changeset
32 this.element
mingchen0919
parents:
diff changeset
33 .on('ready.jstree set_state.jstree', $.proxy(function () {
mingchen0919
parents:
diff changeset
34 this.hide_dots();
mingchen0919
parents:
diff changeset
35 }, this))
mingchen0919
parents:
diff changeset
36 .on("init.jstree loading.jstree ready.jstree", $.proxy(function () {
mingchen0919
parents:
diff changeset
37 //div.style.height = this._data.core.li_height + 'px';
mingchen0919
parents:
diff changeset
38 this.get_container_ul().addClass('jstree-wholerow-ul');
mingchen0919
parents:
diff changeset
39 }, this))
mingchen0919
parents:
diff changeset
40 .on("deselect_all.jstree", $.proxy(function (e, data) {
mingchen0919
parents:
diff changeset
41 this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked');
mingchen0919
parents:
diff changeset
42 }, this))
mingchen0919
parents:
diff changeset
43 .on("changed.jstree", $.proxy(function (e, data) {
mingchen0919
parents:
diff changeset
44 this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked');
mingchen0919
parents:
diff changeset
45 var tmp = false, i, j;
mingchen0919
parents:
diff changeset
46 for(i = 0, j = data.selected.length; i < j; i++) {
mingchen0919
parents:
diff changeset
47 tmp = this.get_node(data.selected[i], true);
mingchen0919
parents:
diff changeset
48 if(tmp && tmp.length) {
mingchen0919
parents:
diff changeset
49 tmp.children('.jstree-wholerow').addClass('jstree-wholerow-clicked');
mingchen0919
parents:
diff changeset
50 }
mingchen0919
parents:
diff changeset
51 }
mingchen0919
parents:
diff changeset
52 }, this))
mingchen0919
parents:
diff changeset
53 .on("open_node.jstree", $.proxy(function (e, data) {
mingchen0919
parents:
diff changeset
54 this.get_node(data.node, true).find('.jstree-clicked').parent().children('.jstree-wholerow').addClass('jstree-wholerow-clicked');
mingchen0919
parents:
diff changeset
55 }, this))
mingchen0919
parents:
diff changeset
56 .on("hover_node.jstree dehover_node.jstree", $.proxy(function (e, data) {
mingchen0919
parents:
diff changeset
57 if(e.type === "hover_node" && this.is_disabled(data.node)) { return; }
mingchen0919
parents:
diff changeset
58 this.get_node(data.node, true).children('.jstree-wholerow')[e.type === "hover_node"?"addClass":"removeClass"]('jstree-wholerow-hovered');
mingchen0919
parents:
diff changeset
59 }, this))
mingchen0919
parents:
diff changeset
60 .on("contextmenu.jstree", ".jstree-wholerow", $.proxy(function (e) {
mingchen0919
parents:
diff changeset
61 if (this._data.contextmenu) {
mingchen0919
parents:
diff changeset
62 e.preventDefault();
mingchen0919
parents:
diff changeset
63 var tmp = $.Event('contextmenu', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey, pageX : e.pageX, pageY : e.pageY });
mingchen0919
parents:
diff changeset
64 $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp);
mingchen0919
parents:
diff changeset
65 }
mingchen0919
parents:
diff changeset
66 }, this))
mingchen0919
parents:
diff changeset
67 /*!
mingchen0919
parents:
diff changeset
68 .on("mousedown.jstree touchstart.jstree", ".jstree-wholerow", function (e) {
mingchen0919
parents:
diff changeset
69 if(e.target === e.currentTarget) {
mingchen0919
parents:
diff changeset
70 var a = $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor");
mingchen0919
parents:
diff changeset
71 e.target = a[0];
mingchen0919
parents:
diff changeset
72 a.trigger(e);
mingchen0919
parents:
diff changeset
73 }
mingchen0919
parents:
diff changeset
74 })
mingchen0919
parents:
diff changeset
75 */
mingchen0919
parents:
diff changeset
76 .on("click.jstree", ".jstree-wholerow", function (e) {
mingchen0919
parents:
diff changeset
77 e.stopImmediatePropagation();
mingchen0919
parents:
diff changeset
78 var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });
mingchen0919
parents:
diff changeset
79 $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus();
mingchen0919
parents:
diff changeset
80 })
mingchen0919
parents:
diff changeset
81 .on("dblclick.jstree", ".jstree-wholerow", function (e) {
mingchen0919
parents:
diff changeset
82 e.stopImmediatePropagation();
mingchen0919
parents:
diff changeset
83 var tmp = $.Event('dblclick', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });
mingchen0919
parents:
diff changeset
84 $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus();
mingchen0919
parents:
diff changeset
85 })
mingchen0919
parents:
diff changeset
86 .on("click.jstree", ".jstree-leaf > .jstree-ocl", $.proxy(function (e) {
mingchen0919
parents:
diff changeset
87 e.stopImmediatePropagation();
mingchen0919
parents:
diff changeset
88 var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });
mingchen0919
parents:
diff changeset
89 $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus();
mingchen0919
parents:
diff changeset
90 }, this))
mingchen0919
parents:
diff changeset
91 .on("mouseover.jstree", ".jstree-wholerow, .jstree-icon", $.proxy(function (e) {
mingchen0919
parents:
diff changeset
92 e.stopImmediatePropagation();
mingchen0919
parents:
diff changeset
93 if(!this.is_disabled(e.currentTarget)) {
mingchen0919
parents:
diff changeset
94 this.hover_node(e.currentTarget);
mingchen0919
parents:
diff changeset
95 }
mingchen0919
parents:
diff changeset
96 return false;
mingchen0919
parents:
diff changeset
97 }, this))
mingchen0919
parents:
diff changeset
98 .on("mouseleave.jstree", ".jstree-node", $.proxy(function (e) {
mingchen0919
parents:
diff changeset
99 this.dehover_node(e.currentTarget);
mingchen0919
parents:
diff changeset
100 }, this));
mingchen0919
parents:
diff changeset
101 };
mingchen0919
parents:
diff changeset
102 this.teardown = function () {
mingchen0919
parents:
diff changeset
103 if(this.settings.wholerow) {
mingchen0919
parents:
diff changeset
104 this.element.find(".jstree-wholerow").remove();
mingchen0919
parents:
diff changeset
105 }
mingchen0919
parents:
diff changeset
106 parent.teardown.call(this);
mingchen0919
parents:
diff changeset
107 };
mingchen0919
parents:
diff changeset
108 this.redraw_node = function(obj, deep, callback, force_render) {
mingchen0919
parents:
diff changeset
109 obj = parent.redraw_node.apply(this, arguments);
mingchen0919
parents:
diff changeset
110 if(obj) {
mingchen0919
parents:
diff changeset
111 var tmp = div.cloneNode(true);
mingchen0919
parents:
diff changeset
112 //tmp.style.height = this._data.core.li_height + 'px';
mingchen0919
parents:
diff changeset
113 if($.inArray(obj.id, this._data.core.selected) !== -1) { tmp.className += ' jstree-wholerow-clicked'; }
mingchen0919
parents:
diff changeset
114 if(this._data.core.focused && this._data.core.focused === obj.id) { tmp.className += ' jstree-wholerow-hovered'; }
mingchen0919
parents:
diff changeset
115 obj.insertBefore(tmp, obj.childNodes[0]);
mingchen0919
parents:
diff changeset
116 }
mingchen0919
parents:
diff changeset
117 return obj;
mingchen0919
parents:
diff changeset
118 };
mingchen0919
parents:
diff changeset
119 };
mingchen0919
parents:
diff changeset
120 // include the wholerow plugin by default
mingchen0919
parents:
diff changeset
121 // $.jstree.defaults.plugins.push("wholerow");
mingchen0919
parents:
diff changeset
122 }));