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
-
+