Commit 2f8902a5 authored by GoshaZotov's avatar GoshaZotov

fix bug 34554

parent 3ea90c60
......@@ -5816,6 +5816,16 @@ TablePart.prototype.addAutoFilter = function()
return autoFilter;
};
TablePart.prototype.isHeaderRow = function()
{
return !!(null === this.HeaderRowCount || this.HeaderRowCount > 0);
};
TablePart.prototype.isTotalsRow = function()
{
return !!(this.TotalsRowCount > 0);
};
/** @constructor */
function AutoFilter() {
......
......@@ -2254,7 +2254,9 @@
var isPart = false;
for(var i = 0; i < tableParts.length; i++ )
{
tableRange = tableParts[i].Ref;
var tablePart = tableParts[i];
var dataRange = tablePart.getRangeWithoutHeaderFooter();
tableRange = tablePart.Ref;
//если хотя бы одна ячейка активной области попадает внутрь форматированной таблицы
if(newActiveRange.isIntersect(tableRange))
{
......@@ -2262,7 +2264,13 @@
{
worksheet.workbook.handlers.trigger("asc_onError", c_oAscError.ID.AutoFilterChangeFormatTableError, c_oAscError.Level.NoCritical);
return false;
}
}
else if((tablePart.isHeaderRow() || tablePart.isTotalsRow()) && dataRange.r1 === dataRange.r2 && activeCells.r1 === activeCells.r2 && dataRange.r1 === activeCells.r1)
{
//если выделена одинственная строчка внутри таблицы
worksheet.workbook.handlers.trigger("asc_onError", c_oAscError.ID.AutoFilterChangeFormatTableError, c_oAscError.Level.NoCritical);
return false;
}
if(newActiveRange.c1 <= tableRange.c1 && newActiveRange.c2 >= tableRange.c2 && newActiveRange.r1 <= tableRange.r1 && newActiveRange.r2 >= tableRange.r2)
{
isExp = true;
......
......@@ -13887,8 +13887,18 @@
//если внутри находится вся активная область(кроме строки заголовков) или если выходит активная область за границу снизу
formatTableInfo.isInsertRowAbove = (refTableContainsActiveRange && ((lastRange.r1 > refTable.r1 && tablePart.HeaderRowCount === null) ||
(lastRange.r1 >= refTable.r1 && tablePart.HeaderRowCount !== null)));
formatTableInfo.isDeleteRow = refTableContainsActiveRange && !(lastRange.r1 <= refTable.r1 && lastRange.r2 >= refTable.r1 && null === tablePart.HeaderRowCount);
//если есть заголовок, и в данных всего одна строка
//todo пределать все проверки HeaderRowCount на вызов функции isHeaderRow
var dataRange = tablePart.getRangeWithoutHeaderFooter();
if((tablePart.isHeaderRow() || tablePart.isTotalsRow()) && dataRange.r1 === dataRange.r2 && lastRange.r1 === lastRange.r2 && dataRange.r1 === lastRange.r1)
{
formatTableInfo.isDeleteRow = false;
}
else
{
formatTableInfo.isDeleteRow = refTableContainsActiveRange && !(lastRange.r1 <= refTable.r1 && lastRange.r2 >= refTable.r1 && null === tablePart.HeaderRowCount);
}
formatTableInfo.isDeleteColumn = true;
formatTableInfo.isDeleteTable = true;
......
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