|
34 | 34 | this.style.display = "none"; // Performance! $(this).hide() is slow...
|
35 | 35 | }
|
36 | 36 | });
|
37 |
| - initializeAjax($(this),true); |
| 37 | + initializeAjax($(this),true,false); |
38 | 38 | });
|
39 | 39 | initEvent();
|
40 | 40 |
|
|
63 | 63 |
|
64 | 64 | var tree= new Array();
|
65 | 65 |
|
66 |
| - function initializeAjax(node,first) |
| 66 | + function initializeAjax(node,first,expandNode) |
67 | 67 | {
|
68 | 68 | if(node==undefined)
|
69 | 69 | {
|
|
93 | 93 | arrayElement=jQuery.parseJSON(data);
|
94 | 94 | $.each(arrayElement, function(index, value) {
|
95 | 95 | tree[index]=value;
|
96 |
| - }); |
97 |
| - children.each(function() |
98 |
| - { |
99 |
| - if($(this).attr('ajax')!=undefined) |
100 |
| - { |
101 |
| - // $(this).removeAttr('ajax'); |
102 |
| - // $(this).attr('proccessing',false); |
103 |
| - // $(this).find('td:first img.tableLoading').hide(); |
104 |
| - } |
105 |
| - }); |
| 96 | + }); |
| 97 | + |
| 98 | + if(expandNode != false) |
| 99 | + { |
| 100 | + expandNode.expand(); |
| 101 | + getElementsSize(); |
| 102 | + } |
| 103 | + |
106 | 104 | initEvent();
|
107 | 105 | });
|
108 | 106 | }
|
|
132 | 130 |
|
133 | 131 | // Recursively show all node's children in a tree
|
134 | 132 | $.fn.expand = function() {
|
135 |
| - if($(this).attr('ajax')!=undefined&&$(this).attr('proccessing')==undefined) |
136 |
| - { |
137 |
| - initializeAjax(parentOf($(this)),false); |
138 |
| - return $(this).expand(); |
139 |
| - } |
140 |
| - else if ($(this).attr('ajax')!=undefined&&tree[$(this).attr('ajax')]!=undefined) |
| 133 | + if ($(this).attr('ajax')!=undefined&&tree[$(this).attr('ajax')]!=undefined) |
141 | 134 | {
|
142 | 135 | createElementsAjax($(this),tree[$(this).attr('ajax')],true);
|
143 | 136 | $(this).removeAttr('ajax');
|
|
146 | 139 | initEvent();
|
147 | 140 | initialize($(this));
|
148 | 141 | }
|
| 142 | + else if($(this).attr('ajax')!=undefined&&tree[$(this).attr('ajax')]==undefined) |
| 143 | + { |
| 144 | + initializeAjax(parentOf($(this)),false,$(this)); |
| 145 | + return |
| 146 | + } |
149 | 147 |
|
150 | 148 | if($(this).attr('proccessing')=='true')
|
151 | 149 | {
|
|
159 | 157 | $('tr[id*="'+id+'"]').each(function() {
|
160 | 158 | initialize($(this));
|
161 | 159 | });
|
162 |
| - initializeAjax($(this),false); |
| 160 | + initializeAjax($(this),false,false); |
163 | 161 | colorLines(true);
|
164 | 162 | return this;
|
165 | 163 | };
|
|
305 | 303 | });
|
306 | 304 | }
|
307 | 305 |
|
| 306 | + |
308 | 307 |
|
309 |
| - function createElementsAjax(node,elements,first) |
| 308 | + function createElementsAjax(node,elementsRaw,first) |
310 | 309 | {
|
| 310 | + var lastElement; |
311 | 311 | if(typeof customElements == 'function')
|
312 | 312 | {
|
313 |
| - html=customElements(node,elements,first); |
| 313 | + html=customElements(node,elementsRaw,first); |
314 | 314 | node.after(html)
|
315 | 315 | }
|
316 | 316 | else
|
317 | 317 | {
|
| 318 | + var html=''; |
318 | 319 | var i = 1;
|
319 | 320 | var id=node.attr('id');
|
320 |
| - elements['folders'] = jQuery.makeArray(elements['folders']).reverse(); |
321 |
| - elements['items'] = jQuery.makeArray(elements['items']).reverse(); |
| 321 | + elements = elementsRaw; |
| 322 | + elements['folders'] = jQuery.makeArray(elementsRaw['folders']); |
| 323 | + elements['items'] = jQuery.makeArray(elementsRaw['items']); |
322 | 324 | // var padding=parseInt(node.find('td:first').css('padding-left').slice(0,-2));
|
323 |
| - |
324 |
| - $.each(elements['items'], function(index, value) { |
325 |
| - var html=''; |
326 |
| - html+= "<tr id='"+id+"-"+i+"' class='child-of-"+id+"' type='item' policy='"+value['policy']+"' element='"+value['item_id']+"'>"; |
327 |
| - html+= " <td><span class='file'>"+sliceFileName(value['name'],40)+"</span></td>"; |
328 |
| - html+= " <td>"+value['size']+"</td>"; |
329 |
| - html+= " <td>"+value['creation']+"</td>"; |
330 |
| - html+= " <td><input type='checkbox' class='treeCheckbox' type='item' element='"+value['item_id']+"'/></td>"; |
331 |
| - html+= "</tr>"; |
| 325 | + |
| 326 | + var j = 1; |
| 327 | + |
| 328 | + |
| 329 | + $.each(elements['folders'], function(index, value) { |
| 330 | + if(j > 70) |
| 331 | + { |
| 332 | + return; |
| 333 | + } |
332 | 334 | i++;
|
333 |
| - node.after(html) |
334 |
| - }); |
335 |
| - |
336 |
| - $.each(elements['folders'], function(index, value) { |
337 |
| - var html=''; |
| 335 | + if($('#'+id+"-"+i).length > 0) |
| 336 | + { |
| 337 | + return; |
| 338 | + } |
338 | 339 | html+= "<tr id='"+id+"-"+i+"' deletable='"+value['deletable']+"' class='parent child-of-"+id+"' ajax='"+value['folder_id']+"'type='folder' policy='"+value['policy']+"' element='"+value['folder_id']+"'>";
|
339 | 340 | html+= " <td><span class='folder'>"+sliceFileName(value['name'],40)+"</span></td>";
|
340 | 341 | html+= " <td>"+'<img class="folderLoading" element="'+value['folder_id']+'" alt="" src="'+json.global.coreWebroot+'/public/images/icons/loading.gif"/>'+"</td>";
|
341 | 342 | html+= " <td>"+value['creation']+"</td>";
|
342 | 343 | html+= " <td><input type='checkbox' class='treeCheckbox' type='folder' element='"+value['folder_id']+"'/></td>";
|
343 | 344 | html+= "</tr>";
|
| 345 | + lastElement = id+"-"+i; |
| 346 | + j++; |
| 347 | + }); |
| 348 | + |
| 349 | + |
| 350 | + $.each(elements['items'], function(index, value) { |
344 | 351 | i++;
|
345 |
| - node.after(html) |
| 352 | + if(j > 70) |
| 353 | + { |
| 354 | + return; |
| 355 | + } |
| 356 | + if($('#'+id+"-"+i).length > 0) |
| 357 | + { |
| 358 | + return; |
| 359 | + } |
| 360 | + html+= "<tr id='"+id+"-"+i+"' class='child-of-"+id+"' type='item' policy='"+value['policy']+"' element='"+value['item_id']+"'>"; |
| 361 | + html+= " <td><span class='file'>"+sliceFileName(value['name'],40)+"</span></td>"; |
| 362 | + html+= " <td>"+value['size']+"</td>"; |
| 363 | + html+= " <td>"+value['creation']+"</td>"; |
| 364 | + html+= " <td><input type='checkbox' class='treeCheckbox' type='item' element='"+value['item_id']+"'/></td>"; |
| 365 | + html+= "</tr>"; |
| 366 | + j++; |
| 367 | + lastElement = id+"-"+i; |
346 | 368 | });
|
| 369 | + |
| 370 | + if(j > 70) |
| 371 | + { |
| 372 | + html+="<tr id='"+id+"-10000000' element='"+id+"'><td colspan = 1 align=right><a class='treeBrowserShowMore'>Show more</a></td><td></td><td></td><td></td></tr>"; |
| 373 | + } |
| 374 | + if(elementsRaw['last'] != undefined) |
| 375 | + { |
| 376 | + $('#'+elementsRaw['last']).after(html); |
| 377 | + } |
| 378 | + else |
| 379 | + { |
| 380 | + node.after(html); |
| 381 | + } |
| 382 | + } |
| 383 | + |
| 384 | + $('a.treeBrowserShowMore').click(function() |
| 385 | + { |
| 386 | + elementsRaw['last'] = lastElement; |
| 387 | + createElementsAjax($('tr#'+$(this).parents('tr').attr('element')),elementsRaw,false); |
| 388 | + initEvent(); |
| 389 | + initialize($(this).parents('tr')); |
| 390 | + $(this).parents('tr').remove(); |
347 | 391 | }
|
| 392 | + ); |
348 | 393 |
|
349 | 394 | var cell = $(node.children("td")[options.treeColumn]);
|
350 | 395 | var padding = getPaddingLeft(cell) + options.indent;
|
|
440 | 485 | function getElementsSize()
|
441 | 486 | {
|
442 | 487 | var elements='';
|
| 488 | + var i = 0; |
443 | 489 | $('img.folderLoading').each(function()
|
444 |
| - { |
| 490 | + { |
| 491 | + i++; |
| 492 | + if(i > 10) |
| 493 | + { |
| 494 | + return ; |
| 495 | + } |
445 | 496 | if($(this).attr('process')==undefined)
|
446 | 497 | {
|
447 | 498 | elements+=$(this).attr('element')+'-';
|
|
459 | 510 | img.parents('tr').find('td:first span:last').append('<span style="padding-left:0px;" class="elementCount">'+' ('+value.count+')'+'</span>');
|
460 | 511 | img.remove();
|
461 | 512 | });
|
| 513 | + getElementsSize(); |
462 | 514 | });
|
463 | 515 | }
|
464 | 516 |
|
|
0 commit comments