mirror of
https://github.com/ONLYOFFICE/sdkjs.git
synced 2026-02-10 18:15:19 +08:00
Fix bug 79382
This commit is contained in:
@ -782,24 +782,7 @@ CHistory.prototype.UndoRedoEnd = function (Point, oRedoObjectParam, bUndo) {
|
||||
this.workbook.handlers.trigger("changeWorksheetUpdate",
|
||||
oRedoObjectParam.oChangeWorksheetUpdate[i],{lockDraw: true, reinitRanges: true});
|
||||
|
||||
for (i in Point.UpdateRigions) {
|
||||
//последним параметром передаю resetCache, при добавлении/удаление строк/столбцов в случая прямого действия
|
||||
//всегда делается cache -> reset, здесь аналогично делаю
|
||||
this.workbook.handlers.trigger("cleanCellCache", i, [Point.UpdateRigions[i]], null, oRedoObjectParam.bAddRemoveRowCol);
|
||||
var curSheet = this.workbook.getWorksheetById(i);
|
||||
if (curSheet)
|
||||
this.workbook.getWorksheetById(i).updateSlicersByRange(Point.UpdateRigions[i]);
|
||||
|
||||
//this.workbook.oApi.onWorksheetChange(Point.UpdateRigions[i]);
|
||||
}
|
||||
|
||||
// So far, the event call has been removed when undo/redo, since UpdateRigions does not always have the right range and you need to pick it up from another place
|
||||
// if (Point.SelectRange) {
|
||||
// this.workbook.oApi.onWorksheetChange(Point.SelectRange);
|
||||
// }
|
||||
// if (Point.SelectRangeRedo && (!Point.SelectRange || (Point.SelectRange && !Point.SelectRange.isEqual(Point.SelectRangeRedo)))) {
|
||||
// this.workbook.oApi.onWorksheetChange(Point.SelectRangeRedo);
|
||||
// }
|
||||
this.updateDrawingsByRegions(Point.UpdateRigions, oRedoObjectParam);
|
||||
|
||||
if (oRedoObjectParam.bOnSheetsChanged)
|
||||
this.workbook.handlers.trigger("asc_onSheetsChanged");
|
||||
@ -813,14 +796,7 @@ CHistory.prototype.UndoRedoEnd = function (Point, oRedoObjectParam, bUndo) {
|
||||
Asc["editor"].wb.recalculateDrawingObjects(Point, false);
|
||||
}
|
||||
|
||||
for (i in oRedoObjectParam.UpdateRigions) {
|
||||
this.workbook.handlers.trigger("cleanCellCache", i, [oRedoObjectParam.UpdateRigions[i]], null, oRedoObjectParam.bAddRemoveRowCol);
|
||||
var curSheet = this.workbook.getWorksheetById(i);
|
||||
if (curSheet)
|
||||
this.workbook.getWorksheetById(i).updateSlicersByRange(oRedoObjectParam.UpdateRigions[i]);
|
||||
|
||||
//this.workbook.oApi.onWorksheetChange(Point.UpdateRigions[i]);
|
||||
}
|
||||
this.updateDrawingsByRegions(oRedoObjectParam.UpdateRigions, oRedoObjectParam);
|
||||
|
||||
if (oRedoObjectParam.oOnUpdateSheetViewSettings[this.workbook.getWorksheet(this.workbook.getActive()).getId()])
|
||||
this.workbook.handlers.trigger("asc_onUpdateSheetViewSettings");
|
||||
@ -1040,19 +1016,6 @@ CHistory.prototype.Reset_RecalcIndex = function()
|
||||
CHistory.prototype.Add_RecalcNumPr = function()
|
||||
{};
|
||||
|
||||
CHistory.prototype.Add_UpdateRegion = function(sheetid, range)
|
||||
{
|
||||
if(this.oRedoObjectParam) {
|
||||
|
||||
var updateRange = this.oRedoObjectParam.UpdateRigions[sheetid];
|
||||
if(null != updateRange)
|
||||
updateRange.union2(range);
|
||||
else
|
||||
updateRange = range.clone();
|
||||
this.oRedoObjectParam.UpdateRigions[sheetid] = updateRange;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
CHistory.prototype.Set_Additional_ExtendDocumentToPos = function()
|
||||
{
|
||||
@ -1745,6 +1708,19 @@ CHistory.prototype.GetSerializeArray = function()
|
||||
this.Points.length = startIndex + 1;
|
||||
this.Index = startIndex;
|
||||
};
|
||||
CHistory.prototype.updateDrawingsByRegions = function(oUpdateRegions, oRedoObjectParam) {
|
||||
const aRanges = [];
|
||||
for (let i in oUpdateRegions) {
|
||||
this.workbook.handlers.trigger("cleanCellCache", i, [oUpdateRegions[i]], null, oRedoObjectParam.bAddRemoveRowCol);
|
||||
var curSheet = this.workbook.getWorksheetById(i);
|
||||
if (curSheet) {
|
||||
const oAscRange = oUpdateRegions[i];
|
||||
aRanges.push(new AscCommonExcel.Range(curSheet, oAscRange.r1, oAscRange.c1, oAscRange.r2, oAscRange.c2));
|
||||
curSheet.updateSlicersByRange(oAscRange);
|
||||
}
|
||||
}
|
||||
this.workbook.handleDrawingsOnWorkbookChange(aRanges);
|
||||
};
|
||||
//------------------------------------------------------------export--------------------------------------------------
|
||||
window['AscCommon'] = window['AscCommon'] || {};
|
||||
window['AscCommon'].CHistory = CHistory;
|
||||
|
||||
@ -6724,7 +6724,46 @@
|
||||
}
|
||||
return oMainExternalReference;
|
||||
};
|
||||
|
||||
Workbook.prototype.handleDrawingsOnWorkbookChange = function(aRanges) {
|
||||
if(!Array.isArray(aRanges) || aRanges.length === 0) {
|
||||
return false;
|
||||
}
|
||||
const oApi = this.oApi;
|
||||
var aChartRefsToChange = [];
|
||||
var aCharts = [];
|
||||
let bHandled = false;
|
||||
const fDrawingCallback = function(oDrawing) {
|
||||
switch (oDrawing.getObjectType()) {
|
||||
case AscDFH.historyitem_type_ChartSpace: {
|
||||
const nPrevLength = aChartRefsToChange.length;
|
||||
oDrawing.collectIntersectionRefs(aRanges, aChartRefsToChange);
|
||||
if(aChartRefsToChange.length > nPrevLength) {
|
||||
aCharts.push(oDrawing);
|
||||
bHandled = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AscDFH.historyitem_type_Control: {
|
||||
bHandled |= oDrawing.handleChangeRanges(aRanges);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
this.handleDrawings(fDrawingCallback);
|
||||
oApi.frameManager.handleMainDiagram(fDrawingCallback);
|
||||
if(aChartRefsToChange.length > 0) {
|
||||
for(var nRef = 0; nRef < aChartRefsToChange.length; ++nRef) {
|
||||
aChartRefsToChange[nRef].updateCacheAndCat();
|
||||
}
|
||||
for(var nChart = 0; nChart < aCharts.length; ++nChart) {
|
||||
aCharts[nChart].recalculate();
|
||||
}
|
||||
}
|
||||
return bHandled;
|
||||
}
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
||||
@ -4212,43 +4212,7 @@
|
||||
}
|
||||
};
|
||||
WorkbookView.prototype.handleDrawingsOnWorkbookChange = function (aRanges) {
|
||||
if(!Array.isArray(aRanges) || aRanges.length === 0) {
|
||||
return;
|
||||
}
|
||||
var aChartRefsToChange = [];
|
||||
var aCharts = [];
|
||||
let bHandled = false;
|
||||
const fDrawingCallback = function(oDrawing) {
|
||||
switch (oDrawing.getObjectType()) {
|
||||
case AscDFH.historyitem_type_ChartSpace: {
|
||||
const nPrevLength = aChartRefsToChange.length;
|
||||
oDrawing.collectIntersectionRefs(aRanges, aChartRefsToChange);
|
||||
if(aChartRefsToChange.length > nPrevLength) {
|
||||
aCharts.push(oDrawing);
|
||||
bHandled = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AscDFH.historyitem_type_Control: {
|
||||
bHandled |= oDrawing.handleChangeRanges(aRanges);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
this.model.handleDrawings(fDrawingCallback);
|
||||
this.Api.frameManager.handleMainDiagram(fDrawingCallback);
|
||||
if(aChartRefsToChange.length > 0) {
|
||||
for(var nRef = 0; nRef < aChartRefsToChange.length; ++nRef) {
|
||||
aChartRefsToChange[nRef].updateCacheAndCat();
|
||||
}
|
||||
for(var nChart = 0; nChart < aCharts.length; ++nChart) {
|
||||
aCharts[nChart].recalculate();
|
||||
}
|
||||
this.onShowDrawingObjects();
|
||||
}
|
||||
const bHandled = this.model.handleDrawingsOnWorkbookChange(aRanges);
|
||||
if (bHandled) {
|
||||
this.onShowDrawingObjects();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user