summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Leibman <michael.leibman@gmail.com>2013-09-27 14:47:59 -0700
committerMichael Leibman <michael.leibman@gmail.com>2013-09-27 14:47:59 -0700
commit31e43047ce6fd5f1806181b9c896d60119af6336 (patch)
tree8f344766251d9bb193b35848aee6a6b1d7ae4a93
parentf73a6363a241058003f09815408cbfa2a6a05b25 (diff)
parent016f9258ce60379951d6a4f9a175147e96adc23a (diff)
downloadSlickGrid-31e43047ce6fd5f1806181b9c896d60119af6336.zip
SlickGrid-31e43047ce6fd5f1806181b9c896d60119af6336.tar.gz
SlickGrid-31e43047ce6fd5f1806181b9c896d60119af6336.tar.bz2
Merge pull request #725 from kzhdev/performance
Performance Improvement
-rw-r--r--slick.grid.js27
1 files changed, 16 insertions, 11 deletions
diff --git a/slick.grid.js b/slick.grid.js
index 50f4a8d..e5c7a89 100644
--- a/slick.grid.js
+++ b/slick.grid.js
@@ -133,7 +133,6 @@ if (typeof Slick === "undefined") {
var headerColumnWidthDiff = 0, headerColumnHeightDiff = 0, // border+padding
cellWidthDiff = 0, cellHeightDiff = 0;
var absoluteColumnMinWidth;
- var numberOfRows = 0;
var tabbingDirection = 1;
var activePosX;
@@ -1597,9 +1596,10 @@ if (typeof Slick === "undefined") {
}
function updateRowCount() {
- var dataLength = getDataLength();
if (!initialized) { return; }
- numberOfRows = getDataLengthIncludingAddNew() +
+
+ var dataLengthIncludingAddNew = getDataLengthIncludingAddNew();
+ var numberOfRows = dataLengthIncludingAddNew +
(options.leaveSpaceForNewRows ? numVisibleRows - 1 : 0);
var oldViewportHasVScroll = viewportHasVScroll;
@@ -1608,7 +1608,7 @@ if (typeof Slick === "undefined") {
// remove the rows that are now outside of the data range
// this helps avoid redundant calls to .removeRow() when the size of the data decreased by thousands of rows
- var l = getDataLengthIncludingAddNew() - 1;
+ var l = dataLengthIncludingAddNew - 1;
for (var i in rowsCache) {
if (i >= l) {
removeRowFromCache(i);
@@ -2001,10 +2001,11 @@ if (typeof Slick === "undefined") {
}
function asyncPostProcessRows() {
+ var dataLength = getDataLength();
while (postProcessFromRow <= postProcessToRow) {
var row = (vScrollDir >= 0) ? postProcessFromRow++ : postProcessToRow--;
var cacheEntry = rowsCache[row];
- if (!cacheEntry || row >= getDataLength()) {
+ if (!cacheEntry || row >= dataLength) {
continue;
}
@@ -2490,13 +2491,14 @@ if (typeof Slick === "undefined") {
}
function isCellPotentiallyEditable(row, cell) {
+ var dataLength = getDataLength();
// is the data for this row loaded?
- if (row < getDataLength() && !getDataItem(row)) {
+ if (row < dataLength && !getDataItem(row)) {
return false;
}
// are we in the Add New row? can we create new from this cell?
- if (columns[cell].cannotTriggerInsert && row >= getDataLength()) {
+ if (columns[cell].cannotTriggerInsert && row >= dataLength) {
return false;
}
@@ -2720,8 +2722,9 @@ if (typeof Slick === "undefined") {
if (options.enableCellNavigation && activeRow != null) {
var row = activeRow + deltaRows;
- if (row >= getDataLengthIncludingAddNew()) {
- row = getDataLengthIncludingAddNew() - 1;
+ var dataLengthIncludingAddNew = getDataLengthIncludingAddNew();
+ if (row >= dataLengthIncludingAddNew) {
+ row = dataLengthIncludingAddNew - 1;
}
if (row < 0) {
row = 0;
@@ -2843,8 +2846,9 @@ if (typeof Slick === "undefined") {
function gotoDown(row, cell, posX) {
var prevCell;
+ var dataLengthIncludingAddNew = getDataLengthIncludingAddNew();
while (true) {
- if (++row >= getDataLengthIncludingAddNew()) {
+ if (++row >= dataLengthIncludingAddNew) {
return null;
}
@@ -2905,7 +2909,8 @@ if (typeof Slick === "undefined") {
}
var firstFocusableCell = null;
- while (++row < getDataLengthIncludingAddNew()) {
+ var dataLengthIncludingAddNew = getDataLengthIncludingAddNew();
+ while (++row < dataLengthIncludingAddNew) {
firstFocusableCell = findFirstFocusableCell(row);
if (firstFocusableCell !== null) {
return {