Commit 2f9f754d authored by GoshaZotov's avatar GoshaZotov

delete hidden rows by filter

parent 137a3557
...@@ -5509,13 +5509,17 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){ ...@@ -5509,13 +5509,17 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){
} }
} }
}; };
Range.prototype._foreachRowNoEmpty=function(actionRow, actionCell){ Range.prototype._foreachRowNoEmpty=function(actionRow, actionCell, excludeHiddenRows){
var oBBox = this.bbox; var oBBox = this.bbox;
if(0 == oBBox.r1 && gc_nMaxRow0 == oBBox.r2) if(0 == oBBox.r1 && gc_nMaxRow0 == oBBox.r2)
{ {
var aRows = this.worksheet._getRows(); var aRows = this.worksheet._getRows();
for(var i in aRows) for(var i in aRows)
{ {
if (excludeHiddenRows && this.worksheet.getRowHidden(i)) {
continue;
}
var row = aRows[i]; var row = aRows[i];
if( null != actionRow ) if( null != actionRow )
{ {
...@@ -5539,6 +5543,10 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){ ...@@ -5539,6 +5543,10 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){
{ {
var minR = Math.min(oBBox.r2,this.worksheet.getRowsCount()); var minR = Math.min(oBBox.r2,this.worksheet.getRowsCount());
for(var i = oBBox.r1; i <= minR; i++){ for(var i = oBBox.r1; i <= minR; i++){
if (excludeHiddenRows && this.worksheet.getRowHidden(i)) {
continue;
}
var row = this.worksheet._getRowNoEmpty(i); var row = this.worksheet._getRowNoEmpty(i);
if(row) if(row)
{ {
...@@ -5748,17 +5756,17 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){ ...@@ -5748,17 +5756,17 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){
// this._foreachCol(actionCol, null); // this._foreachCol(actionCol, null);
} }
}; };
Range.prototype._setPropertyNoEmpty=function(actionRow, actionCol, actionCell){ Range.prototype._setPropertyNoEmpty=function(actionRow, actionCol, actionCell, excludeHiddenRows){
var nRangeType = this._getRangeType(); var nRangeType = this._getRangeType();
if(c_oRangeType.Range == nRangeType) if(c_oRangeType.Range == nRangeType)
return this._foreachNoEmpty(actionCell); return this._foreachNoEmpty(actionCell, excludeHiddenRows);
else if(c_oRangeType.Row == nRangeType) else if(c_oRangeType.Row == nRangeType)
return this._foreachRowNoEmpty(actionRow, actionCell); return this._foreachRowNoEmpty(actionRow, actionCell, excludeHiddenRows);
else if(c_oRangeType.Col == nRangeType) else if(c_oRangeType.Col == nRangeType)
return this._foreachColNoEmpty(actionCol, actionCell); return this._foreachColNoEmpty(actionCol, actionCell);
else else
{ {
var oRes = this._foreachRowNoEmpty(actionRow, actionCell); var oRes = this._foreachRowNoEmpty(actionRow, actionCell, excludeHiddenRows);
if(null != oRes) if(null != oRes)
return oRes; return oRes;
if(null != actionCol) if(null != actionCol)
...@@ -7701,7 +7709,7 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){ ...@@ -7701,7 +7709,7 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){
cell.cleanCache(); cell.cleanCache();
}); });
}; };
Range.prototype.cleanFormat=function(){ Range.prototype.cleanFormat=function(excludeHiddenRows){
History.Create_NewPoint(); History.Create_NewPoint();
History.StartTransaction(); History.StartTransaction();
this.unmerge(); this.unmerge();
...@@ -7717,10 +7725,10 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){ ...@@ -7717,10 +7725,10 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){
cell.setStyle(null); cell.setStyle(null);
// if(cell.isEmpty()) // if(cell.isEmpty())
// cell.Remove(); // cell.Remove();
}); }, excludeHiddenRows);
History.EndTransaction(); History.EndTransaction();
}; };
Range.prototype.cleanText=function(){ Range.prototype.cleanText=function(excludeHiddenRows){
History.Create_NewPoint(); History.Create_NewPoint();
History.StartTransaction(); History.StartTransaction();
this._setPropertyNoEmpty(null, null, this._setPropertyNoEmpty(null, null,
...@@ -7728,10 +7736,10 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){ ...@@ -7728,10 +7736,10 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){
cell.setValue(""); cell.setValue("");
// if(cell.isEmpty()) // if(cell.isEmpty())
// cell.Remove(); // cell.Remove();
}); }, excludeHiddenRows);
History.EndTransaction(); History.EndTransaction();
}; };
Range.prototype.cleanAll=function(){ Range.prototype.cleanAll=function(excludeHiddenRows){
History.Create_NewPoint(); History.Create_NewPoint();
History.StartTransaction(); History.StartTransaction();
this.unmerge(); this.unmerge();
...@@ -7750,7 +7758,7 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){ ...@@ -7750,7 +7758,7 @@ Woorksheet.prototype.isApplyFilterBySheet = function(){
// col.Remove(); // col.Remove();
},function(cell, nRow0, nCol0, nRowStart, nColStart){ },function(cell, nRow0, nCol0, nRowStart, nColStart){
oThis.worksheet._removeCell(nRow0, nCol0); oThis.worksheet._removeCell(nRow0, nCol0);
}); }, excludeHiddenRows);
this.worksheet.workbook.dependencyFormulas.calcTree(); this.worksheet.workbook.dependencyFormulas.calcTree();
History.EndTransaction(); History.EndTransaction();
......
...@@ -5062,7 +5062,49 @@ ...@@ -5062,7 +5062,49 @@
return result; return result;
}, },
bIsExcludeHiddenRows: function(range, activeCell)
{
var worksheet = this.worksheet;
var result = false;
//если есть общий фильтр со скрытыми строками, чтобы мы не удаляли на странице, данные в скрытых строках не трогаем
if(worksheet.AutoFilter && worksheet.AutoFilter.isApplyAutoFilter())
{
result = true;
}
else if(this._getTableIntersectionWithActiveCell(activeCell, true))//если activeCell лежит внутри таблицы c примененным фильтром
{
result = true;
}
return result;
},
_getTableIntersectionWithActiveCell: function(activeCell, checkApplyFiltering)
{
var result = false;
var worksheet = this.worksheet;
if(worksheet.TableParts && worksheet.TableParts.length > 0)
{
for(var i = 0; i < worksheet.TableParts.length; i++)
{
var ref = worksheet.TableParts[i].Ref;
if(ref.contains(activeCell.col, activeCell.row))
{
if(checkApplyFiltering && worksheet.TableParts[i].isApplyAutoFilter())
{
result = worksheet.TableParts[i];
break;
}
}
}
}
return result;
},
_isPartAutoFilterUnderRange: function(range) _isPartAutoFilterUnderRange: function(range)
{ {
var worksheet = this.worksheet; var worksheet = this.worksheet;
......
...@@ -8644,26 +8644,22 @@ ...@@ -8644,26 +8644,22 @@
/* отключаем отрисовку на случай необходимости пересчета ячеек, заносим ячейку, при необходимости в список перерисовываемых */ /* отключаем отрисовку на случай необходимости пересчета ячеек, заносим ячейку, при необходимости в список перерисовываемых */
t.model.workbook.dependencyFormulas.lockRecal(); t.model.workbook.dependencyFormulas.lockRecal();
// Если нужно удалить автофильтры - удаляем //нужно ли удалять скрытые строки
if (val === c_oAscCleanOptions.All || val === c_oAscCleanOptions.Text) { var excludeHiddenRows = t.model.autoFilters.bIsExcludeHiddenRows(arn, activeCell);
t.model.autoFilters.isEmptyAutoFilters(arn);
} else if (val === c_oAscCleanOptions.Format) {
t.model.autoFilters.cleanFormat(arn);
}
switch(val) { switch(val) {
case c_oAscCleanOptions.All: case c_oAscCleanOptions.All:
range.cleanAll(); range.cleanAll(excludeHiddenRows);
t.model.removeSparklines(arn); t.model.removeSparklines(arn);
// Удаляем комментарии // Удаляем комментарии
t.cellCommentator.deleteCommentsRange(arn); t.cellCommentator.deleteCommentsRange(arn);
break; break;
case c_oAscCleanOptions.Text: case c_oAscCleanOptions.Text:
case c_oAscCleanOptions.Formula: case c_oAscCleanOptions.Formula:
range.cleanText(); range.cleanText(excludeHiddenRows);
break; break;
case c_oAscCleanOptions.Format: case c_oAscCleanOptions.Format:
range.cleanFormat(); range.cleanFormat(excludeHiddenRows);
break; break;
case c_oAscCleanOptions.Comments: case c_oAscCleanOptions.Comments:
t.cellCommentator.deleteCommentsRange(arn); t.cellCommentator.deleteCommentsRange(arn);
...@@ -8679,6 +8675,13 @@ ...@@ -8679,6 +8675,13 @@
break; break;
} }
// Если нужно удалить автофильтры - удаляем
if (val === c_oAscCleanOptions.All || val === c_oAscCleanOptions.Text) {
t.model.autoFilters.isEmptyAutoFilters(arn);
} else if (val === c_oAscCleanOptions.Format) {
t.model.autoFilters.cleanFormat(arn);
}
// Вызываем функцию пересчета для заголовков форматированной таблицы // Вызываем функцию пересчета для заголовков форматированной таблицы
if (val === c_oAscCleanOptions.All || val === c_oAscCleanOptions.Text) { if (val === c_oAscCleanOptions.All || val === c_oAscCleanOptions.Text) {
t.model.autoFilters.renameTableColumn(arn); t.model.autoFilters.renameTableColumn(arn);
......
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