Skip to content
This repository was archived by the owner on Sep 10, 2021. It is now read-only.

Commit 273a3fa

Browse files
author
Charles Marion
committed
ENH: browser behavior
1 parent d88e05c commit 273a3fa

File tree

1 file changed

+91
-39
lines changed

1 file changed

+91
-39
lines changed

core/public/js/layout/jquery.treeTable.js

Lines changed: 91 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
this.style.display = "none"; // Performance! $(this).hide() is slow...
3535
}
3636
});
37-
initializeAjax($(this),true);
37+
initializeAjax($(this),true,false);
3838
});
3939
initEvent();
4040

@@ -63,7 +63,7 @@
6363

6464
var tree= new Array();
6565

66-
function initializeAjax(node,first)
66+
function initializeAjax(node,first,expandNode)
6767
{
6868
if(node==undefined)
6969
{
@@ -93,16 +93,14 @@
9393
arrayElement=jQuery.parseJSON(data);
9494
$.each(arrayElement, function(index, value) {
9595
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+
106104
initEvent();
107105
});
108106
}
@@ -132,12 +130,7 @@
132130

133131
// Recursively show all node's children in a tree
134132
$.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)
141134
{
142135
createElementsAjax($(this),tree[$(this).attr('ajax')],true);
143136
$(this).removeAttr('ajax');
@@ -146,6 +139,11 @@
146139
initEvent();
147140
initialize($(this));
148141
}
142+
else if($(this).attr('ajax')!=undefined&&tree[$(this).attr('ajax')]==undefined)
143+
{
144+
initializeAjax(parentOf($(this)),false,$(this));
145+
return
146+
}
149147

150148
if($(this).attr('proccessing')=='true')
151149
{
@@ -159,7 +157,7 @@
159157
$('tr[id*="'+id+'"]').each(function() {
160158
initialize($(this));
161159
});
162-
initializeAjax($(this),false);
160+
initializeAjax($(this),false,false);
163161
colorLines(true);
164162
return this;
165163
};
@@ -305,46 +303,93 @@
305303
});
306304
}
307305

306+
308307

309-
function createElementsAjax(node,elements,first)
308+
function createElementsAjax(node,elementsRaw,first)
310309
{
310+
var lastElement;
311311
if(typeof customElements == 'function')
312312
{
313-
html=customElements(node,elements,first);
313+
html=customElements(node,elementsRaw,first);
314314
node.after(html)
315315
}
316316
else
317317
{
318+
var html='';
318319
var i = 1;
319320
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']);
322324
// 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+
}
332334
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+
}
338339
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']+"'>";
339340
html+= " <td><span class='folder'>"+sliceFileName(value['name'],40)+"</span></td>";
340341
html+= " <td>"+'<img class="folderLoading" element="'+value['folder_id']+'" alt="" src="'+json.global.coreWebroot+'/public/images/icons/loading.gif"/>'+"</td>";
341342
html+= " <td>"+value['creation']+"</td>";
342343
html+= " <td><input type='checkbox' class='treeCheckbox' type='folder' element='"+value['folder_id']+"'/></td>";
343344
html+= "</tr>";
345+
lastElement = id+"-"+i;
346+
j++;
347+
});
348+
349+
350+
$.each(elements['items'], function(index, value) {
344351
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;
346368
});
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();
347391
}
392+
);
348393

349394
var cell = $(node.children("td")[options.treeColumn]);
350395
var padding = getPaddingLeft(cell) + options.indent;
@@ -440,8 +485,14 @@
440485
function getElementsSize()
441486
{
442487
var elements='';
488+
var i = 0;
443489
$('img.folderLoading').each(function()
444-
{
490+
{
491+
i++;
492+
if(i > 10)
493+
{
494+
return ;
495+
}
445496
if($(this).attr('process')==undefined)
446497
{
447498
elements+=$(this).attr('element')+'-';
@@ -459,6 +510,7 @@
459510
img.parents('tr').find('td:first span:last').append('<span style="padding-left:0px;" class="elementCount">'+' ('+value.count+')'+'</span>');
460511
img.remove();
461512
});
513+
getElementsSize();
462514
});
463515
}
464516

0 commit comments

Comments
 (0)