From 26afc32e57bf0930766f7f931be8657759ab5107 Mon Sep 17 00:00:00 2001 From: dmig Date: Wed, 2 Mar 2016 15:58:50 +0700 Subject: [PATCH 1/4] drastically improve perfomance --- js/jquery.treegrid.js | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/js/jquery.treegrid.js b/js/jquery.treegrid.js index f605f13..e3a4b9e 100644 --- a/js/jquery.treegrid.js +++ b/js/jquery.treegrid.js @@ -21,6 +21,9 @@ $this.treegrid('setTreeContainer', $(this)); $this.treegrid('setSettings', settings); settings.getRootNodes.apply(this, [$(this)]).treegrid('initNode', settings); + $this.treegrid('getAllNodes').each(function() { + $(this).attr('id', 'treegrid-' + $(this).treegrid('getNodeId')); + }); $this.treegrid('getRootNodes').treegrid('render'); }); }, @@ -559,6 +562,11 @@ $.error('Method with name ' + method + ' does not exists for jQuery.treegrid'); } }; + /** + * Pre-init RegExp objects + */ + var templateClass = /treegrid-([\w-]+)/, + templateParentClass = /treegrid-parent-([\w-]+)/; /** * Plugin's default options */ @@ -576,22 +584,16 @@ return $(this).find('.treegrid-expander'); }, getNodeId: function() { - var template = /treegrid-([A-Za-z0-9_-]+)/; - if (template.test($(this).attr('class'))) { - return template.exec($(this).attr('class'))[1]; - } - return null; + var result = templateClass.exec($(this).attr('class')); + return result ? result[1] : null; }, getParentNodeId: function() { - var template = /treegrid-parent-([A-Za-z0-9_-]+)/; - if (template.test($(this).attr('class'))) { - return template.exec($(this).attr('class'))[1]; - } - return null; + var result = templateParentClass.exec($(this).attr('class')); + return result ? result[1] : null; }, getNodeById: function(id, treegridContainer) { var templateClass = "treegrid-" + id; - return treegridContainer.find('tr.' + templateClass); + return treegridContainer.find('#' + templateClass); }, getChildNodes: function(id, treegridContainer) { var templateClass = "treegrid-parent-" + id; @@ -603,17 +605,13 @@ getRootNodes: function(treegridContainer) { var result = $.grep(treegridContainer.find('tr'), function(element) { var classNames = $(element).attr('class'); - var templateClass = /treegrid-([A-Za-z0-9_-]+)/; - var templateParentClass = /treegrid-parent-([A-Za-z0-9_-]+)/; return templateClass.test(classNames) && !templateParentClass.test(classNames); }); return $(result); }, getAllNodes: function(treegridContainer) { var result = $.grep(treegridContainer.find('tr'), function(element) { - var classNames = $(element).attr('class'); - var templateClass = /treegrid-([A-Za-z0-9_-]+)/; - return templateClass.test(classNames); + return templateClass.test($(element).attr('class')); }); return $(result); }, From 6b2eddb4b0677b5d2df56bbf17437f48c6c70984 Mon Sep 17 00:00:00 2001 From: dmig Date: Wed, 2 Mar 2016 16:01:32 +0700 Subject: [PATCH 2/4] add profiler call --- examples/example-huge.html | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/examples/example-huge.html b/examples/example-huge.html index 3a63fe5..9fc9bb5 100644 --- a/examples/example-huge.html +++ b/examples/example-huge.html @@ -15,9 +15,8 @@ //create huge treetable var count_root_elements=100; var count_deep=10; - console.log('init'); + console.log('generate...'); for(var i=0; i").addClass("treegrid-"+i+"-0").appendTo($('.tree')).html("Root node "+i+"Additional info"); for(var j=1; j - +