Commit 2a47e3dd authored by Igor.Zotov's avatar Igor.Zotov Committed by Alexander.Trofimov

небольшая оптимизация функии поиска смежных ячеек

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@56063 954022d7-b5bf-4e40-9824-e11837661b57
parent 829915dc
...@@ -2633,13 +2633,16 @@ var gUndoInsDelCellsFlag = true; ...@@ -2633,13 +2633,16 @@ var gUndoInsDelCellsFlag = true;
_getAdjacentCellsAF: function(ar,aWs) _getAdjacentCellsAF: function(ar,aWs)
{ {
var ws = this.worksheet; var ws = this.worksheet;
var cell = ws.model.getCell( new CellAddress(ar.r1, ar.c1, 0)).getCells();
var cloneActiveRange = ar.clone(true); // ToDo слишком много клонирования var cloneActiveRange = ar.clone(true); // ToDo слишком много клонирования
var isEnd = true;
var range; var isEnd = true, cell, range, merged, valueMerg, rowNum = cloneActiveRange.r1, isEmptyCell;
var merged;
var valueMerg; //есть ли вообще на странице мерженные ячейки
var rowNum = cloneActiveRange.r1; //TODO стоит пересмотреть проверку мерженных ячеек
console.time("_getAdjacentCellsAF");
var allRange = ws.model.getRange3(0, 0, ws.nRowsCount, ws.nColsCount);
var isMergedCells = allRange.hasMerged();
for(var n = cloneActiveRange.r1 - 1; n <= cloneActiveRange.r2 + 1; n++) for(var n = cloneActiveRange.r1 - 1; n <= cloneActiveRange.r2 + 1; n++)
{ {
if(n < 0) if(n < 0)
...@@ -2667,16 +2670,18 @@ var gUndoInsDelCellsFlag = true; ...@@ -2667,16 +2670,18 @@ var gUndoInsDelCellsFlag = true;
continue; continue;
cell = ws.model._getCell(n,k); cell = ws.model._getCell(n,k);
range = ws.model.getRange3(n, k, n, k); isEmptyCell = cell.isEmptyText();
//если мерженная ячейка //если мерженная ячейка
if(!(n == ar.r1 && k == ar.c1) && range) if(!(n == ar.r1 && k == ar.c1) && isMergedCells != null && isEmptyCell)
{ {
range = ws.model.getRange3(n, k, n, k);
merged = range.hasMerged(); merged = range.hasMerged();
valueMerg = null; valueMerg = null;
if(merged) if(merged)
{ {
valueMerg = ws.model.getRange3(merged.r1 + 1, merged.c1 + 1, merged.r2 + 1, merged.c2 + 1).getValue(); valueMerg = ws.model.getRange3(merged.r1, merged.c1, merged.r2, merged.c2).getValue();
if(valueMerg != null && valueMerg != "") if(valueMerg != null && valueMerg != "")
{ {
if(merged.r1 < cloneActiveRange.r1) if(merged.r1 < cloneActiveRange.r1)
...@@ -2704,11 +2709,11 @@ var gUndoInsDelCellsFlag = true; ...@@ -2704,11 +2709,11 @@ var gUndoInsDelCellsFlag = true;
if(k < 0) if(k < 0)
k = 0; k = 0;
cell = ws.model._getCell(n,k); cell = ws.model._getCell(n,k);
} };
} };
} };
if(cell.getValueWithoutFormat() != '' || (valueMerg != null && valueMerg != "")) if(!isEmptyCell || (valueMerg != null && valueMerg != ""))
{ {
if(k < cloneActiveRange.c1) if(k < cloneActiveRange.c1)
{ {
...@@ -2725,11 +2730,12 @@ var gUndoInsDelCellsFlag = true; ...@@ -2725,11 +2730,12 @@ var gUndoInsDelCellsFlag = true;
else if(n > cloneActiveRange.r2) else if(n > cloneActiveRange.r2)
{ {
cloneActiveRange.r2 = n;isEnd = false; cloneActiveRange.r2 = n;isEnd = false;
} };
};
} };
} };
} console.timeEnd("_getAdjacentCellsAF");
//проверяем есть ли пустые строчки и столбцы в диапазоне //проверяем есть ли пустые строчки и столбцы в диапазоне
if(ar.r1 == cloneActiveRange.r1) if(ar.r1 == cloneActiveRange.r1)
{ {
...@@ -2778,7 +2784,6 @@ var gUndoInsDelCellsFlag = true; ...@@ -2778,7 +2784,6 @@ var gUndoInsDelCellsFlag = true;
} }
//проверяем не вошёл ли другой фильтр в область нового фильтра //проверяем не вошёл ли другой фильтр в область нового фильтра
if(aWs.AutoFilter || aWs.TableParts) if(aWs.AutoFilter || aWs.TableParts)
{ {
//var oldFilters = this.allAutoFilter; //var oldFilters = this.allAutoFilter;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment