Changeset 70 for pro-bachkim-filespace/sourcecode/assets/js/manager.js
- Timestamp:
- Sep 9, 2014 4:14:10 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified pro-bachkim-filespace/sourcecode/assets/js/manager.js ¶
r66 r70 19 19 if( o.datasource == undefined ) o.datasource = 'ajax'; 20 20 21 var isDev = false; 22 var contextmenu = null; 21 23 var oContainer = this; 22 24 var tree = []; … … 25 27 var maxWidth = 0; 26 28 var treeCurrentNode = null; 29 var self = this; 30 var oClipBoard = {items:null, act:null}; 31 32 /** 33 * Toolbar defined 34 * */ 35 var btnNewFolder = $('#' + o.toolsbar + ' > DIV.btn-group.basic > #btnNewFolder'); 36 var btnDel = $('#' + o.toolsbar + ' > DIV.btn-group.basic > #btnDel'); 37 var btnCopy = $('#' + o.toolsbar + ' > DIV.btn-group.basic > #btnCopy'); 38 var btnCut = $('#' + o.toolsbar + ' > DIV.btn-group.basic > #btnCut'); 39 var btnPaste = $('#' + o.toolsbar + ' > DIV.btn-group.basic > #btnPaste'); 40 var btnShare = $('#' + o.toolsbar + ' > DIV.btn-group.social > #btnShare'); 41 var btnPreview = $('#' + o.toolsbar + ' > DIV.btn-group.social > #btnPreview'); 42 var btnDownload = $('#' + o.toolsbar + ' > DIV.btn-group.creation > #btnDownload'); 43 var btnUpload = $('#' + o.toolsbar + ' > DIV.btn-group.creation > #btnUpload'); 44 var btnRefresh = $('#' + o.toolsbar + ' > DIV.btn-group.control > #btnRefresh'); 27 45 28 46 var sendCommand = function (p) { … … 34 52 if( p.callbackAlways == undefined ) p.callbackAlways = null; 35 53 36 if (p.script != null && o.datasource == 'ajax') {54 if (p.script != null && (o.datasource == 'ajax' || isDev)) { 37 55 $.post(o.host + o.hostmodule + p.script, p.postdata, function (data){ 38 56 if (data) { … … 92 110 } 93 111 } 112 113 var buildTreeFromParent = function (dirID, node) { 114 var aryChildFiles = []; 115 var aryChildDirs = []; 116 var aryChildIDs = []; 117 var aryTmp = []; 118 var dir = o.data.DIRECTORIES[searchItemByID(dirID, 'directory')]; 119 aryChildDirs = searchItemsByParent(dirID, 'directory'); 120 aryChildFiles = searchItemsByParent(dirID, 'file'); 121 122 $(aryChildDirs).each(function (index) { 123 aryChildIDs[index] = this.id; 124 }); 125 126 if (node.id == undefined) node.id = dirID; 127 128 if ($(aryChildFiles).length > 0 ) { 129 if (node.files == undefined) node.files = []; 130 $(aryChildFiles).each(function (index) { 131 node.files[index] = this.id; 132 }); 133 } 134 135 if ($(aryChildDirs).length > 0) { 136 if (node.childs == undefined) node.childs = []; 137 $(aryChildIDs).each(function (index) { 138 node.childs[index] = new Object; 139 buildTreeFromParent(aryChildIDs[index], node.childs[index]); 140 }); 141 } 142 } 94 143 95 144 var checkChildExisted = function (id) { … … 100 149 101 150 var doneInit = function () { 151 bindEventToToolbars(); 152 documentEventsBinding(); 102 153 }; 103 154 … … 108 159 var init = function () { 109 160 layoutRender (); 110 111 161 $('#' + o.tree).parent().resizable({ 112 162 maxWidth: maxWidth, … … 117 167 } 118 168 }); 119 120 169 $(window).resize (function() {layoutRender ();$('#' + o.tree).parent().resizable({maxWidth: maxWidth});}); 121 122 170 sendCommand ({postdata:null,callbackSuccess:createFileManager,callbackDone:doneInit,callbackFail:failInit}); 123 171 }; … … 167 215 } 168 216 217 /************************** 218 * TOOLBAR EVENTS - START * 219 **************************/ 220 var btnRefreshClick = function (obj) { 221 $(o).find('i').addClass('icon-spin'); 222 sendCommand ({ postdata:null, 223 callbackSuccess:function (parseData) { 224 o.data = parseData; 225 self.updateData({updateAll:true}); 226 o.oTree.refeshTree(); 227 console.log(o); 228 }, 229 callbackDone:function () {$(o).find('i').removeClass('icon-spin');}, 230 callbackFail:failInit 231 }); 232 } 233 234 var btnNewFolderClick = function () { 235 createFolderStart(); 236 } 237 238 var btnDelClick = function () { 239 var items = o.oGrid.getHightLightItem(); 240 if ($(items).length == 0){ 241 var dirID = $(o.oTree.getSelectedNode()).attr('id'); 242 var item = o.data.DIRECTORIES[searchItemByID(dirID,'directory')]; 243 item.type = 'directory'; 244 items = [item]; 245 } 246 self.deleteItem(items); 247 } 248 249 var btnCopyClick = function () { 250 copy(); 251 } 252 253 var btnPasteClick = function () { 254 paste(); 255 } 256 257 258 var bindEventToToolbars = function () { 259 $(btnRefresh).click(function(e){btnRefreshClick(this)}); 260 261 $(btnNewFolder).click(function(e){btnNewFolderClick()}); 262 $(btnDel).click(function(e){btnDelClick()}); 263 $(btnCopy).click(function(e){btnCopyClick()}); 264 $(btnPaste).click(function(e){btnPasteClick()}) 265 266 /*btnCut 267 btnShare 268 btnPreview 269 btnDownload 270 btnUpload*/ 271 } 272 /************************ 273 * TOOLBAR EVENTS - END * 274 ************************/ 275 276 /*********************************** 277 * DOCUMENT EVENTS BINDING - START * 278 ***********************************/ 279 var documentEventsBinding = function () { 280 $(document).bind('keydown', function (e){ 281 switch( e.which ) { 282 case 113: 283 case 27: 284 var gridSelectedItems = o.oGrid.getHightLightItem(); 285 if ($(gridSelectedItems).length > 0) { 286 o.oGrid.rename(e.which); 287 }else { 288 o.oTree.rename(e.which); 289 } 290 break; 291 case 46: 292 //delete 293 btnDelClick(); 294 break; 295 case 65: 296 if (e.ctrlKey) { 297 o.oGrid.selectAllNode(); 298 } 299 break; 300 default: 301 break; 302 } 303 }); 304 } 305 /*********************************** 306 * DOCUMENT EVENTS BINDING - END * 307 ***********************************/ 308 169 309 /******************************* 170 310 * CREATE FOLDER - START * 171 311 *******************************/ 172 var createFolder = function (parent) { 173 var postdata = {delobj:delobj}; 312 var createFolderStart = function () { 313 var promptOptions = { 314 title: "Tạo thư mục má»i", 315 buttons: { 316 confirm: { 317 label: "Lưu" 318 }, 319 cancel: { 320 label: "Há»§y" 321 } 322 }, 323 callback: function(result) { 324 if (result === null) { 325 326 } else { 327 createFolder(treeCurrentNode, result); 328 } 329 } 330 }; 331 332 return bootbox.prompt(promptOptions); 333 } 334 335 var createFolder = function (parent, name) { 336 var postdata = {fname:name,fparentid:parent}; 174 337 var script = 'createdir'; 338 /*isDev = true;*/ 175 339 sendCommand ({ 176 340 postdata:postdata, 177 341 script:script, 178 callbackSuccess:function(parseData){c onsole.log(parseData);},342 callbackSuccess:function(parseData){createFolderFinish(parseData);}, 179 343 callbackFail: function(){} 180 344 }); 181 345 } 182 346 183 var createFolderCallBack = function (parent) { 184 347 var createFolderFinish = function (parseData) { 348 /*isDev = false;*/ 349 if (parseData.ERROR.errCode == 0) { 350 var node = {id:parseData.id, name:parseData.name,parentID:parseData.parentID}; 351 o.oTree.createNode(node); 352 o.data.DIRECTORIES[$(o.data.DIRECTORIES).length] = node; 353 if (o.oGrid) o.oGrid.reloadGrid(parseData.parentID); 354 } 185 355 } 186 356 /******************************* 187 * CREATE FOLDER - END *357 * CREATE FOLDER - END * 188 358 *******************************/ 189 190 /******************************* 191 * CLIPBOARD - START * 192 *******************************/ 193 var oClipBoard = {item:null, act:null}; 194 195 var addToClipboard = function (item, act) { 196 oClipboard = {item:item,act:act}; 197 } 198 199 var clearClipboard = function () { 200 oClipBoard = {item:null, act:null}; 201 } 202 203 /******************************* 204 * CLIPBOARD - START * 205 *******************************/ 359 /******************************** 360 * COPY & PASTE & MOVE - START * 361 ************=*******************/ 362 var copy = function (){ 363 //detect selected items 364 //push to clipboard 365 var items = o.oGrid.getHightLightItem(); 366 367 if ($(items).length == 0) { 368 var node = o.oTree.getSelectedNode(); 369 var itemID = $(node).attr('id'); 370 items[0] = o.data.DIRECTORIES[searchItemByID(itemID, 'directory')]; 371 items[0].type = 'directory'; 372 } 373 374 if ($(items).length > 0) { 375 oClipBoard.items = items; 376 oClipBoard.act = 'copy'; 377 } 378 } 379 380 var paste = function () { 381 if ((oClipBoard.act != 'copy' 382 && oClipBoard.act != 'move') 383 || oClipBoard.items == null) return; 384 385 var items = []; 386 var destination = self.getTreeCurrentNode(); 387 388 $(oClipBoard.items).each(function (index) { 389 var node = new Object; 390 buildTreeFromParent(this.id, node); 391 items[index] = node; 392 }); 393 394 var postdata = {destination:destination,data:JSON.stringify(items)}; 395 var script = 'copy'; 396 sendCommand ({ 397 postdata:postdata, 398 script:script, 399 callbackSuccess:function(parseData){ 400 console.log(parseData); 401 } 402 }); 403 404 } 405 406 var move = function () { 407 408 } 409 410 var copyTo = function () { 411 412 } 413 414 var moveTo = function () { 415 416 } 417 418 /***************************** 419 * COPY & PASTE & MOVE - END * 420 *****************************/ 421 206 422 this.deleteItem = function (item) { 423 207 424 var confirmText = 'Bạn có muá»n xóa '; 208 425 209 426 if ($.isArray(item) && item.length > 1) { 210 confirmText += 'các thư mục ( file) và các thư mục (file) con Äã chá»n?';427 confirmText += 'các thư mục (và files) Äã chá»n?'; 211 428 } 212 429 else if (item.length == 1) { … … 215 432 confirmText += ' <span style="font-weight:bold">' + item[0].name + "</span> khÃŽng?"; 216 433 } 434 435 confirmText += '<br /><div style="color:red">(hà nh Äá»ng nà y sẜ xóa tất cả thư mục con và các file trong các thư mục Äã chá»n)</div>'; 217 436 218 437 for (var i = 0; i < item.length; i++) { … … 262 481 postdata:postdata, 263 482 script:script, 264 callbackSuccess:function(parseData){console.log(parseData);}, 483 callbackSuccess:function(parseData){ 484 if($(parseData.DIRECTORIES).length > 0) { 485 for(var i = 0; i < $(parseData.DIRECTORIES).length; i++) { 486 o.oTree.deletion($(parseData.DIRECTORIES).get(i)); 487 o.oGrid.deletion($(parseData.DIRECTORIES).get(i), 'directory'); 488 } 489 } 490 491 if($(parseData.FILES).length > 0) { 492 for(var i = 0; i < $(parseData.FILES).length; i++) { 493 var id = $(parseData.FILES).get(i); 494 var file = o.data.FILES[searchItemByID(id)]; 495 o.oGrid.deletion(file.id, file.minetype); 496 } 497 } 498 499 }, 265 500 callbackFail: function(){} 266 501 }); … … 270 505 271 506 bootbox.confirm(confirmOptions); 272 273 507 } 274 508 … … 284 518 } 285 519 286 this.gridNodeClick = function (gridNode) { 287 //fire when click a node on Grid 288 //then fire action of Tree 520 this.gridNodeDblClick = function (node) { 521 if (node.minetype == 'directory') { 522 var treeNode = $('#' + o.tree).find('UL.vstree[rel^="node' + node.parentID + '"] > LI[rel^="folder"] > A#' + node.id); 523 o.oTree.activeNode(treeNode); 524 } 525 else { 526 //execute or preview file 527 } 289 528 }; 290 529 291 530 this.createNewFolder = function () { 292 var promptOptions = { 293 title: "Tạo thư mục má»i", 294 buttons: { 295 confirm: { 296 label: "Lưu" 297 }, 298 cancel: { 299 label: "Há»§y" 300 } 301 }, 302 callback: function(result) { 303 if (result === null) { 304 console.log("Prompt dismissed"); 305 } else { 306 console.log("Hi "+result); 307 } 308 } 309 }; 310 311 bootbox.prompt(promptOptions); 531 312 532 } 313 533 314 534 this.updateData = function (p) { 315 535 if( p.item == undefined ) p.item = null; 536 if( p.updateAll == undefined ) p.updateAll = false; 316 537 if( p.from == undefined ) p.from = null; 317 538 if( p.type == undefined ) p.type = null; 318 539 if( p.callback == undefined ) p.callback = null; 319 540 320 541 var obj = p.from == 'tree' ? o.oGrid : o.oTree; 321 322 var index = searchItemByID(p.item.id, p.type); 323 switch (p.type) { 324 case 'directory': 325 o.data.DIRECTORIES[index].name = p.item.name; 326 o.data.DIRECTORIES[index].parentID = p.item.parentID; 327 break; 328 case 'file': 329 o.data.FILES[index].name = p.item.name; 330 o.data.FILES[index].parentID = p.item.parentID; 331 o.data.FILES[index].minetype = p.item.minetype; 332 break; 333 default: 334 break; 542 if (!p.updateAll) { 543 var index = searchItemByID(p.item.id, p.type); 544 switch (p.type) { 545 case 'directory': 546 o.data.DIRECTORIES[index].name = p.item.name; 547 o.data.DIRECTORIES[index].parentID = p.item.parentID; 548 break; 549 case 'file': 550 o.data.FILES[index].name = p.item.name; 551 o.data.FILES[index].parentID = p.item.parentID; 552 o.data.FILES[index].minetype = p.item.minetype; 553 break; 554 default: 555 break; 556 } 335 557 } 336 558 … … 343 565 344 566 //call sendCommand 567 } 568 569 this.searchItemsByParent = function (parentID, type) { 570 return searchItemsByParent(parentID, type); 571 } 572 573 this.searchItemByID = function (parentID, type) { 574 return searchItemByID(parentID, type); 345 575 } 346 576
Note: See TracChangeset
for help on using the changeset viewer.