Changeset 70 for pro-bachkim-filespace/sourcecode/assets/js/tree.js
- Timestamp:
- Sep 9, 2014 4:14:10 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pro-bachkim-filespace/sourcecode/assets/js/tree.js
r66 r70 20 20 21 21 var createNode = function (node) { 22 22 23 if( !node ) var node = {}; 23 24 if( node.item == undefined ) node.item = null; //item.id, item.name, item.parentID … … 25 26 if( node.defaultStatus == undefined ) node.defaultStatus = 0; //0: collapsed; 1:expanded; 26 27 if( node.showContextMenu == undefined ) node.showContextMenu = true; //0: collapsed; 1:expanded; 27 28 var parentNode = node.isRoot == true ? oContainer : $(oContainer).find('UL.vstree > LI[rel="folder"] > A#' + node.item.parentID);28 if (node.callback == undefined ) node.callback = null; 29 29 30 var nodeClass = node.isRoot == true ? 'home':'directory'; 30 31 var hidden = (node.isRoot == true || node.item.parentID == 0 ) ? null:'display:none'; … … 32 33 33 34 var a = $('<a></a>',{id: node.item.id,href: '#',rel: node.item.name,text: node.item.name}); 34 var li = $('<li></li>',{'class': nodeClass,rel: 'folder'}) .append(a);35 var ul = $('<ul></ul>',{'class':'vstree',style:hidden}).append(li);36 $(li).addClass(defaulState);37 35 var li = $('<li></li>',{'class': nodeClass,rel: 'folder'}) 36 .addClass(defaulState) 37 .append(a); 38 var ul = null; 38 39 bindNodeEvents(a); 39 40 40 41 treeNodes[node.item.id] = {id:node.item.id, name:node.item.name, parentID:node.item.parentID, html:ul, status:defaulState, isRoot:node.isRoot}; 41 42 if (node.isRoot == false) $(parentNode).parent().append(ul); else $(parentNode).append(ul); 43 return (parentNode.length == 1); 42 if (node.isRoot == true) { 43 ul = $('<ul></ul>',{'class':'vstree',rel:'node-1',style:hidden}).append(li); 44 $(oContainer).append(ul); 45 } 46 else { 47 var preUL = $(oContainer).find('UL.vstree[rel^="node-1"]'); 48 49 if (preUL != null) { 50 if (node.item.parentID == 0) { 51 var groupUL = $(oContainer).find('UL.vstree[rel^="node0"]'); 52 if ($(groupUL).length == 0) { 53 ul = $('<ul></ul>',{'class':'vstree',rel:'node0',style:hidden}).append(li); 54 $(preUL).find('> LI.home').append(ul); 55 } 56 else { 57 $(groupUL).append(li); 58 } 59 } 60 else { 61 var liArray = $(oContainer).find('UL.vstree LI[rel="folder"]'); 62 for (var i = 0; i < $(liArray).length; i++) { 63 var id = $(liArray[i]).find('A').attr('id'); 64 65 if (id == node.item.parentID) { 66 var groupUL = $(oContainer).find('UL.vstree[rel^="node' + id + '"]'); 67 if ($(groupUL).length == 0) { 68 ul = $('<ul></ul>',{'class':'vstree',rel:'node'+node.item.parentID,style:hidden}).append(li); 69 $(liArray[i]).append(ul); 70 } 71 else { 72 $(groupUL).append(li); 73 } 74 } 75 } 76 } 77 } 78 } 79 80 if (node.callback != null) node.callback(this); 81 //return (parentNode.length == 1); 82 return true; 44 83 }; 45 84 … … 49 88 //click event 50 89 $(node).bind("click", function (e){if(e.button == 0)nodeClick(this);return false;}); 51 52 //Press F2 to rename, ESC to cancel rename53 if (documentBoundEvent == false) {54 $(oContainer).bind('keydown','keypress', function(e) {55 switch( e.keyCode ) {56 case 113:57 renameInit(selectedNode);58 break;59 case 27:60 renameCancel(selectedNode);61 break;62 case 46:63 var dirID = $(selectedNode).attr('id');64 var dirObj = {};65 dirObj.id = treeNodes[dirID].id;66 dirObj.name = treeNodes[dirID].name;67 dirObj.parentID = treeNodes[dirID].parentID;68 dirObj.type = 'directory';69 if (e.keyCode == 46) o.manager.deleteItem([dirObj]);70 break;71 case 13:72 default:73 break;74 }75 });76 77 documentBoundEvent = true;78 }79 80 disabledItemsList = [];81 82 $(node).contextMenu({menu: 'treeMenu',disabledItems: disabledItemsList},83 function(action, el, pos) {84 var dirID = $(el).attr('id');85 var item = $(treeNodes[dirID].html).find('> LI > A#' + dirID);86 var dirObj = {};87 dirObj.id = treeNodes[dirID].id;88 dirObj.name = treeNodes[dirID].name;89 dirObj.parentID = treeNodes[dirID].parentID;90 dirObj.type = 'directory';91 92 switch(action) {93 case 'rename':94 renameInit(item);95 break;96 case 'newfolder':97 o.manager.createNewFolder();98 break;99 case 'share':100 case 'copy':101 case 'cut':102 break;103 case 'delete':104 o.manager.deleteItem([dirObj]);105 break;106 default:107 break;108 }109 });110 111 90 }; 112 91 … … 124 103 } 125 104 else { 126 collap Node(node);105 collapseNode(node); 127 106 treeNodes[folderID].status = 'collapsed'; 128 107 } … … 142 121 }; 143 122 144 var collap Node = function (node) {123 var collapseNode = function (node) { 145 124 var li = $(node).parent(); 146 125 $(li).find('> UL').slideUp({ duration: o.expandSpeed, easing: o.expandEasing }); … … 148 127 }; 149 128 129 var isCollapsedNode = function (node) { 130 return $(node).parent().hasClass('collapsed'); 131 } 132 133 var nodeIsExisted = function (nodeID) { 134 var node = $(oContainer).find('UL.vstree LI.directory > A#' + nodeID); 135 return ($(node).length > 0) ? node : false; 136 } 137 150 138 var initTree = function () { 139 $(oContainer).attr('unselectable','on') 140 .css({'-moz-user-select':'-moz-none', 141 '-moz-user-select':'none', 142 '-o-user-select':'none', 143 '-khtml-user-select':'none', 144 '-webkit-user-select':'none', 145 '-ms-user-select':'none', 146 'user-select':'none' 147 }).bind('selectstart', function(){ return false;}); 148 151 149 if (o.data == null) { 152 150 console.error(o.data, 'No directory to display!'); 153 151 return; 154 152 } 153 154 o.data.sort(function (a,b) { 155 return a.parentID - b.parentID; 156 }); 157 155 158 $(oContainer).find ('.vstree').remove(); 156 159 var homeNode = createNode({ … … 164 167 } 165 168 o.manager.setTreeCurrentNode(0); 166 167 $(oContainer).attr('unselectable','on')168 .css({'-moz-user-select':'-moz-none',169 '-moz-user-select':'none',170 '-o-user-select':'none',171 '-khtml-user-select':'none',172 '-webkit-user-select':'none',173 '-ms-user-select':'none',174 'user-select':'none'175 }).bind('selectstart', function(){ return false;});176 169 }; 177 170 … … 179 172 * RENAME - START * 180 173 ******************/ 181 182 174 var renameInit = function (node) { 183 175 var editor = $('<input>',{class:'rename', type: 'text', value:$(node).text()}); 184 176 $(editor).bind('focusout', function(e){renameCancel(node)}); 185 $(editor).bind('key press', function(e){177 $(editor).bind('keydown', function(e){ 186 178 var keycode = (e.keyCode ? e.keyCode : e.which); 187 if(keycode == '13') renameComplete(node); 179 if (keycode == '27') { 180 renameCancel(node); 181 }else if(keycode == '13') renameComplete(node); 188 182 e.stopPropagation(); 189 183 }); … … 199 193 $(node).find('>INPUT').remove(); 200 194 $(node).text(treeNodes[dirID].name); 201 $(node). select();195 $(node).focus(); 202 196 } 203 197 … … 212 206 updateData(dirID, 'rename'); 213 207 } 214 215 208 /****************** 216 209 * RENAME - END * … … 222 215 var destroyNode = function (node) { 223 216 var dirID = $(node).attr('id'); 224 $(node).parent(). parent().remove();217 $(node).parent().remove(); 225 218 delete treeNodes[dirID]; 226 219 } 227 220 /****************** 228 * DELTE - END *221 * DELTE - END * 229 222 ******************/ 230 /*******************************231 * COPY & PASTE & MOVE - START *232 *******************************/233 var copyNode = function (source){234 235 }236 237 var pasteNode = function (destination) {238 239 }240 241 var moveNode = function (source, destination) {242 243 }244 /*****************************245 * COPY & PASTE & MOVE - END *246 *****************************/247 248 223 var updateData = function (id, act) { 249 224 for (var i = 0; i < o.data.length; i++) { … … 263 238 } 264 239 240 this.createNode = function (node) { 241 createNode ({item: node}); 242 o.data.sort(function (a,b) { 243 return a.parentID - b.parentID; 244 }); 245 if (node.parentID != 0) { 246 var parentNode = $(oContainer).find('UL LI > A#' + node.parentID); 247 expandNode(parentNode); 248 } 249 } 250 251 this.activeNode = function (node) { 252 var dirID = $(node).attr('id'); 253 selectedNode = hightlightNode(node); 254 o.manager.setTreeCurrentNode(dirID); 255 expandNode(node); 256 $(node).select(); 257 } 258 259 this.refeshTree = function () { 260 for (var i = 0; i < o.data.length; i++) { 261 var node = nodeIsExisted(o.data[i].id); 262 var defaulState = isCollapsedNode(node) ? 0:1; 263 if (node == false) 264 createNode ({item: o.data[i],defaulState:defaulState}); 265 } 266 267 o.manager.setTreeCurrentNode($(selectedNode).attr('id')); 268 } 269 270 this.getSelectedNode = function () { 271 return selectedNode; 272 } 273 265 274 this.deletion = function (id) { 266 275 destroyNode($(oContainer).find('A#'+id)); 276 } 277 278 this.findNodebyID = function (id) { 279 267 280 } 268 281 … … 279 292 return this; 280 293 }; 294 295 this.rename = function (key) { 296 if (selectedNode == null) return false; 297 if (key == 113) { 298 renameInit(selectedNode); 299 } 300 else if (key == 27) { 301 renameCancel(selectedNode); 302 } 303 304 return true; 305 } 281 306 282 307 return this.initialize();
Note: See TracChangeset
for help on using the changeset viewer.