Commit 0ca60d16 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@49912 954022d7-b5bf-4e40-9824-e11837661b57
parent b1781bcc
...@@ -3218,7 +3218,12 @@ UndoRedoWoorksheet.prototype = { ...@@ -3218,7 +3218,12 @@ UndoRedoWoorksheet.prototype = {
} }
this.wb.needRecalc = rec; this.wb.needRecalc = rec;
recalc(this.wb); recalc(this.wb);
if(g_oUndoRedoAutoFiltersMoveData)
{
var worksheetView = this.wb.oApi.wb.getWorksheetById(nSheetId);
worksheetView.autoFilters._moveAutoFilters(worksheetView ,null, null, g_oUndoRedoAutoFiltersMoveData);
g_oUndoRedoAutoFiltersMoveData = null;
}
} }
else{ else{
...@@ -3509,6 +3514,7 @@ UndoRedoComment.prototype = { ...@@ -3509,6 +3514,7 @@ UndoRedoComment.prototype = {
} }
var g_oUndoRedoAutoFilters = null; var g_oUndoRedoAutoFilters = null;
var g_oUndoRedoAutoFiltersMoveData = null;
function UndoRedoAutoFilters(wb){ function UndoRedoAutoFilters(wb){
this.wb = wb; this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function(){return g_oUndoRedoAutoFilters;}); this.nType = UndoRedoClassTypes.Add(function(){return g_oUndoRedoAutoFilters;});
...@@ -3527,6 +3533,11 @@ UndoRedoAutoFilters.prototype = { ...@@ -3527,6 +3533,11 @@ UndoRedoAutoFilters.prototype = {
var api = window["Asc"]["editor"]; var api = window["Asc"]["editor"];
if (!api.wb) if (!api.wb)
return; return;
if(bUndo && Type == 6)
{
g_oUndoRedoAutoFiltersMoveData = Data;
return;
}
var ws = api.wb.getWorksheetById(nSheetId); var ws = api.wb.getWorksheetById(nSheetId);
Data.worksheet = ws; Data.worksheet = ws;
var autoFilters = ws.autoFilters; var autoFilters = ws.autoFilters;
......
...@@ -1759,8 +1759,6 @@ ...@@ -1759,8 +1759,6 @@
Undo: function (type, data) { Undo: function (type, data) {
var ws = data.worksheet; var ws = data.worksheet;
var aWs = this._getCurrentWS(ws); var aWs = this._getCurrentWS(ws);
var moveTo = data.moveTo ? data.moveTo : null;
var moveFrom = data.moveFrom ? data.moveFrom : null;
data = data.undo; data = data.undo;
var cloneData = Asc.clone(data); var cloneData = Asc.clone(data);
if(!cloneData) if(!cloneData)
...@@ -1779,11 +1777,8 @@ ...@@ -1779,11 +1777,8 @@
} }
} }
} }
if(type == 6)
{ if(cloneData.FilterColumns || cloneData.AutoFilter || cloneData.result)
this._moveAutoFilters(ws, moveFrom, moveTo, data);
}
else if(cloneData.FilterColumns || cloneData.AutoFilter || cloneData.result)
{ {
if(cloneData.Ref) if(cloneData.Ref)
{ {
...@@ -5451,6 +5446,15 @@ ...@@ -5451,6 +5446,15 @@
{ {
//проверяем покрывает ли диапазон хотя бы один автофильтр //проверяем покрывает ли диапазон хотя бы один автофильтр
var aWs = this._getCurrentWS(ws); var aWs = this._getCurrentWS(ws);
if(arnTo == null && arnFrom == null && data)
{
arnTo = data.moveFrom ? data.moveFrom : null;
arnFrom = data.moveTo ? data.moveTo : null;
data = data.undo;
if(arnTo == null || arnFrom == null)
return;
}
var findFilters = this._searchFiltersInRange(arnFrom , aWs); var findFilters = this._searchFiltersInRange(arnFrom , aWs);
if(findFilters) if(findFilters)
{ {
...@@ -5465,7 +5469,9 @@ ...@@ -5465,7 +5469,9 @@
//у найденных фильтров меняем Ref + скрытые строчки открываем //у найденных фильтров меняем Ref + скрытые строчки открываем
for(var i = 0; i < findFilters.length; i++) for(var i = 0; i < findFilters.length; i++)
{ {
oCurFilter = Asc.clone(findFilters[i]) if(!oCurFilter)
oCurFilter = [];
oCurFilter[i] = Asc.clone(findFilters[i])
ref = findFilters[i].Ref; ref = findFilters[i].Ref;
range = this._refToRange(ref); range = this._refToRange(ref);
newRange = Asc.Range(range.c1 + diffCol, range.r1 + diffRow, range.c2 + diffCol, range.r2 + diffRow); newRange = Asc.Range(range.c1 + diffCol, range.r1 + diffRow, range.c2 + diffCol, range.r2 + diffRow);
...@@ -5476,8 +5482,12 @@ ...@@ -5476,8 +5482,12 @@
if(!data && findFilters[i].AutoFilter && findFilters[i].AutoFilter.FilterColumns) if(!data && findFilters[i].AutoFilter && findFilters[i].AutoFilter.FilterColumns)
delete findFilters[i].AutoFilter.FilterColumns; delete findFilters[i].AutoFilter.FilterColumns;
else if(data && data.AutoFilter && data.AutoFilter.FilterColumns) else if(!data && findFilters[i] && findFilters[i].FilterColumns)
findFilters[i].AutoFilter.FilterColumns = data.AutoFilter.FilterColumns; delete findFilters[i].FilterColumns;
else if(data && data[i] && data[i].AutoFilter && data[i].AutoFilter.FilterColumns)
findFilters[i].AutoFilter.FilterColumns = data[i].AutoFilter.FilterColumns;
else if(data && data[i] && data[i].FilterColumns)
findFilters[i].FilterColumns = data[i].FilterColumns;
//при перемещении меняем массив кнопок //при перемещении меняем массив кнопок
if(this.allButtonAF) if(this.allButtonAF)
...@@ -5930,6 +5940,43 @@ ...@@ -5930,6 +5940,43 @@
result = this._rangeToId(range); result = this._rangeToId(range);
} }
return result; return result;
},
_preMoveAutoFilters: function(ws, arnFrom)
{
var aWs = this._getCurrentWS(ws);
var findFilters = this._searchFiltersInRange(arnFrom , aWs);
if(findFilters)
{
for(var i = 0; i < findFilters.length; i++)
{
this._openHiddenRows(ws,findFilters[i]);
}
}
this._reDrawFilters(ws);
},
//открываем строки скрытые данным фильтром
_openHiddenRows: function(ws, filter)
{
if(filter && this.allButtonAF)
{
var buttons = this.allButtonAF;
for(var n = 0; n < buttons.length; n++)
{
if(((filter.AutoFilter && buttons[n].inFilter == filter.AutoFilter.Ref) || buttons[n].inFilter == filter.Ref) && buttons[n].hiddenRows.length)
{
var arrHiddens = buttons[n].hiddenRows;
for(var row = 0; row < arrHiddens.length; row++)
{
if(arrHiddens[row] != undefined && arrHiddens[row] == true)
{
ws.model.setRowHidden(/*bHidden*/false, row, row);
}
}
}
}
}
} }
}; };
......
...@@ -6889,6 +6889,7 @@ ...@@ -6889,6 +6889,7 @@
History.SetSelection(arnFrom.clone()); History.SetSelection(arnFrom.clone());
History.SetSelectionRedo(arnTo.clone()); History.SetSelectionRedo(arnTo.clone());
History.StartTransaction(); History.StartTransaction();
t.autoFilters._preMoveAutoFilters(t, arnFrom);
t.model._moveRange(arnFrom, arnTo, copyRange); t.model._moveRange(arnFrom, arnTo, copyRange);
t._updateCellsRange(arnTo); t._updateCellsRange(arnTo);
t.cleanSelection(); t.cleanSelection();
......
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