Files
Yajbir Singh f1b860b25c
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

6454 lines
218 KiB
JavaScript

/*
* (c) Copyright Ascensio System SIA 2010-2024
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(/**
* @param {Window} window
* @param {undefined} undefined
*/
function (window, undefined) {
// Import
var c_oAscLockTypeElem = AscCommonExcel.c_oAscLockTypeElem;
var c_oAscInsertOptions = Asc.c_oAscInsertOptions;
var c_oAscDeleteOptions = Asc.c_oAscDeleteOptions;
var gc_nMaxRow0 = AscCommon.gc_nMaxRow0;
var gc_nMaxCol0 = AscCommon.gc_nMaxCol0;
var c_oUndoRedoSerializeType = {
Null: 0, Undefined: 1, SByte: 2, Byte: 3, Bool: 4, Long: 5, ULong: 6, Double: 7, String: 8, Object: 9, Array: 10
};
function DrawingCollaborativeData() {
this.oClass = null;
this.oBinaryReader = null;
this.nPos = null;
this.sChangedObjectId = null;
this.isDrawingCollaborativeData = true;
}
//главный обьект для пересылки изменений
function UndoRedoItemSerializable(oClass, nActionType, nSheetId, oRange, oData, LocalChange) {
AscDFH.CChangesBase.call(this, this);
this.oClass = oClass;
this.nActionType = nActionType;
this.nSheetId = nSheetId;
this.oRange = oRange;
this.oData = oData;
this.LocalChange = LocalChange;
}
UndoRedoItemSerializable.prototype = Object.create(AscDFH.CChangesBase.prototype);
UndoRedoItemSerializable.prototype.Serialize = function (oBinaryWriter, collaborativeEditing) {
if ((this.oClass && this.oData && this.oData.getType) || (this.oClass && (this.oClass.Save_Changes || this.oClass.WriteToBinary))) {
var oThis = this;
var oBinaryCommonWriter = new AscCommon.BinaryCommonWriter(oBinaryWriter);
oBinaryCommonWriter.WriteItemWithLength(function () {
oThis.SerializeInner(oBinaryWriter, collaborativeEditing);
});
}
};
UndoRedoItemSerializable.prototype.SerializeInner = function (oBinaryWriter, collaborativeEditing) {
//nClassType
if (!this.oClass.WriteToBinary) {
oBinaryWriter.WriteBool(true);
var nClassType = this.oClass.getClassType();
oBinaryWriter.WriteByte(nClassType);
//nActionType
oBinaryWriter.WriteByte(this.nActionType);
//nSheetId
if (null != this.nSheetId) {
oBinaryWriter.WriteBool(true);
oBinaryWriter.WriteString2(this.nSheetId.toString());
} else {
oBinaryWriter.WriteBool(false);
}
//oRange
if (null != this.oRange) {
oBinaryWriter.WriteBool(true);
var c1 = this.oRange.c1;
var c2 = this.oRange.c2;
var r1 = this.oRange.r1;
var r2 = this.oRange.r2;
if (null != this.nSheetId && (0 != c1 || gc_nMaxCol0 != c2)) {
c1 = collaborativeEditing.getLockMeColumn2(this.nSheetId, c1);
c2 = collaborativeEditing.getLockMeColumn2(this.nSheetId, c2);
}
if (null != this.nSheetId && (0 != r1 || gc_nMaxRow0 != r2)) {
r1 = collaborativeEditing.getLockMeRow2(this.nSheetId, r1);
r2 = collaborativeEditing.getLockMeRow2(this.nSheetId, r2);
}
oBinaryWriter.WriteLong(c1);
oBinaryWriter.WriteLong(r1);
oBinaryWriter.WriteLong(c2);
oBinaryWriter.WriteLong(r2);
} else {
oBinaryWriter.WriteBool(false);
}
//oData
this.SerializeDataObject(oBinaryWriter, this.oData, this.nSheetId, collaborativeEditing);
} else {
oBinaryWriter.WriteBool(false);
var Class;
Class = this.oClass.GetClass();
oBinaryWriter.WriteString2(Class.Get_Id());
oBinaryWriter.WriteLong(this.oClass.Type);
this.oClass.WriteToBinary(oBinaryWriter);
}
};
UndoRedoItemSerializable.prototype.SerializeDataObject =
function (oBinaryWriter, oData, nSheetId, collaborativeEditing) {
var oThis = this;
if (oData.getType) {
var nDataType = oData.getType();
//не далаем копию oData, а сдвигаем в ней, потому что все равно после сериализации изменения потруться
// if (null != oData.applyCollaborative) {
// oData.applyCollaborative(nSheetId, collaborativeEditing);
// }
oBinaryWriter.WriteByte(nDataType);
var oBinaryCommonWriter = new AscCommon.BinaryCommonWriter(oBinaryWriter);
if (oData.Write_ToBinary2) {
oBinaryCommonWriter.WriteItemWithLength(function () {
oData.Write_ToBinary2(oBinaryWriter)
});
} else {
oBinaryCommonWriter.WriteItemWithLength(function () {
oThis.SerializeDataInnerObject(oBinaryWriter, oData, nSheetId, collaborativeEditing);
});
}
} else {
oBinaryWriter.WriteByte(UndoRedoDataTypes.Unknown);
oBinaryWriter.WriteLong(0);
}
};
UndoRedoItemSerializable.prototype.SerializeDataInnerObject =
function (oBinaryWriter, oData, nSheetId, collaborativeEditing) {
var oProperties = oData.getProperties();
for (var i in oProperties) {
var nItemType = oProperties[i];
var oItem = oData.getProperty(nItemType, nSheetId);
this.SerializeDataInner(oBinaryWriter, nItemType, oItem, nSheetId, collaborativeEditing);
}
};
UndoRedoItemSerializable.prototype.SerializeDataInnerArray =
function (oBinaryWriter, oData, nSheetId, collaborativeEditing) {
for (var i = 0; i < oData.length; ++i) {
this.SerializeDataInner(oBinaryWriter, 0, oData[i], nSheetId, collaborativeEditing);
}
};
UndoRedoItemSerializable.prototype.SerializeDataInner =
function (oBinaryWriter, nItemType, oItem, nSheetId, collaborativeEditing) {
var oThis = this;
var sTypeOf;
if (null === oItem) {
sTypeOf = "null";
} else if (oItem instanceof Array) {
sTypeOf = "array";
} else {
sTypeOf = typeof (oItem);
}
switch (sTypeOf) {
case "object":
oBinaryWriter.WriteByte(nItemType);
oBinaryWriter.WriteByte(c_oUndoRedoSerializeType.Object);
this.SerializeDataObject(oBinaryWriter, oItem, nSheetId, collaborativeEditing);
break;
case "array":
oBinaryWriter.WriteByte(nItemType);
oBinaryWriter.WriteByte(c_oUndoRedoSerializeType.Array);
var oBinaryCommonWriter = new AscCommon.BinaryCommonWriter(oBinaryWriter);
oBinaryCommonWriter.WriteItemWithLength(function () {
oThis.SerializeDataInnerArray(oBinaryWriter, oItem, nSheetId, collaborativeEditing);
});
break;
case "number":
oBinaryWriter.WriteByte(nItemType);
var nFlorItem = Math.floor(oItem);
if (nFlorItem == oItem) {
if (-128 <= oItem && oItem <= 127) {
oBinaryWriter.WriteByte(c_oUndoRedoSerializeType.SByte);
oBinaryWriter.WriteSByte(oItem);
} else if (127 < oItem && oItem <= 255) {
oBinaryWriter.WriteByte(c_oUndoRedoSerializeType.Byte);
oBinaryWriter.WriteByte(oItem);
} else if (-0x80000000 <= oItem && oItem <= 0x7FFFFFFF) {
oBinaryWriter.WriteByte(c_oUndoRedoSerializeType.Long);
oBinaryWriter.WriteLong(oItem);
} else if (0x7FFFFFFF < oItem && oItem <= 0xFFFFFFFF) {
oBinaryWriter.WriteByte(c_oUndoRedoSerializeType.ULong);
oBinaryWriter.WriteLong(oItem);
} else {
oBinaryWriter.WriteByte(c_oUndoRedoSerializeType.Double);
oBinaryWriter.WriteDouble2(oItem);
}
} else {
oBinaryWriter.WriteByte(c_oUndoRedoSerializeType.Double);
oBinaryWriter.WriteDouble2(oItem);
}
break;
case "boolean":
oBinaryWriter.WriteByte(nItemType);
oBinaryWriter.WriteByte(c_oUndoRedoSerializeType.Bool);
oBinaryWriter.WriteBool(oItem);
break;
case "string":
oBinaryWriter.WriteByte(nItemType);
oBinaryWriter.WriteByte(c_oUndoRedoSerializeType.String);
oBinaryWriter.WriteString2(oItem);
break;
case "null":
oBinaryWriter.WriteByte(nItemType);
oBinaryWriter.WriteByte(c_oUndoRedoSerializeType.Null);
break;
case "undefined":
oBinaryWriter.WriteByte(nItemType);
oBinaryWriter.WriteByte(c_oUndoRedoSerializeType.Undefined);
break;
default:
break;
}
};
UndoRedoItemSerializable.prototype.Deserialize = function (oBinaryReader) {
var res = AscCommon.c_oSerConstants.ReadOk;
res = oBinaryReader.EnterFrame(4);
var nLength = oBinaryReader.GetULongLE();
res = oBinaryReader.EnterFrame(nLength);
if (AscCommon.c_oSerConstants.ReadOk != res || 0 === nLength) {
return res;
}
var bNoDrawing = oBinaryReader.GetBool();
if (bNoDrawing) {
var nClassType = oBinaryReader.GetUChar();
this.oClass = UndoRedoClassTypes.Create(nClassType);
this.nActionType = oBinaryReader.GetUChar();
var bSheetId = oBinaryReader.GetBool();
if (bSheetId) {
this.nSheetId = oBinaryReader.GetString2LE(oBinaryReader.GetULongLE());
}
var bRange = oBinaryReader.GetBool();
if (bRange) {
var nC1 = oBinaryReader.GetULongLE();
var nR1 = oBinaryReader.GetULongLE();
var nC2 = oBinaryReader.GetULongLE();
var nR2 = oBinaryReader.GetULongLE();
this.oRange = new Asc.Range(nC1, nR1, nC2, nR2);
} else {
this.oRange = null;
}
this.oData = this.DeserializeData(oBinaryReader);
} else {
var changedObjectId = oBinaryReader.GetString2();
this.nActionType = 1;
this.oData = new DrawingCollaborativeData();
this.oData.sChangedObjectId = changedObjectId;
this.oData.oBinaryReader = oBinaryReader;
this.oData.nPos = oBinaryReader.cur;
}
};
UndoRedoItemSerializable.prototype.DeserializeData = function (oBinaryReader) {
var nDataClassType = oBinaryReader.GetUChar();
var nLength = oBinaryReader.GetULongLE();
var oDataObject = UndoRedoDataTypes.Create(nDataClassType);
if (null != oDataObject) {
if (null != oDataObject.Read_FromBinary2) {
oDataObject.Read_FromBinary2(oBinaryReader);
} else if (null != oDataObject.Read_FromBinary2AndReplace) {
oDataObject = oDataObject.Read_FromBinary2AndReplace(oBinaryReader);
} else {
this.DeserializeDataInner(oBinaryReader, oDataObject, nLength, false);
}
} else {
oBinaryReader.Skip(nLength);
}
return oDataObject;
};
UndoRedoItemSerializable.prototype.DeserializeDataInner = function (oBinaryReader, oDataObject, nLength, bIsArray) {
var nStartPos = oBinaryReader.GetCurPos();
var nCurPos = nStartPos;
while (nCurPos - nStartPos < nLength && nCurPos < oBinaryReader.GetSize() - 1) {
var nMemeberType = oBinaryReader.GetUChar();
var nDataType = oBinaryReader.GetUChar();
var nUnknownType = false;
var oNewValue = null;
switch (nDataType) {
case c_oUndoRedoSerializeType.Null:
oNewValue = null;
break;
case c_oUndoRedoSerializeType.Undefined:
oNewValue = undefined;
break;
case c_oUndoRedoSerializeType.Bool:
oNewValue = oBinaryReader.GetBool();
break;
case c_oUndoRedoSerializeType.SByte:
oNewValue = oBinaryReader.GetChar();
break;
case c_oUndoRedoSerializeType.Byte:
oNewValue = oBinaryReader.GetUChar();
break;
case c_oUndoRedoSerializeType.Long:
oNewValue = oBinaryReader.GetLongLE();
break;
case c_oUndoRedoSerializeType.ULong:
oNewValue = AscFonts.FT_Common.IntToUInt(oBinaryReader.GetULongLE());
break;
case c_oUndoRedoSerializeType.Double:
oNewValue = oBinaryReader.GetDoubleLE();
break;
case c_oUndoRedoSerializeType.String:
oNewValue = oBinaryReader.GetString2LE(oBinaryReader.GetULongLE());
break;
case c_oUndoRedoSerializeType.Object:
oNewValue = this.DeserializeData(oBinaryReader);
break;
case c_oUndoRedoSerializeType.Array:
var aNewArray = [];
var nNewLength = oBinaryReader.GetULongLE();
this.DeserializeDataInner(oBinaryReader, aNewArray, nNewLength, true);
oNewValue = aNewArray;
break;
default:
nUnknownType = true;
break;
}
if (false == nUnknownType) {
if (bIsArray) {
oDataObject.push(oNewValue);
} else {
oDataObject.setProperty(nMemeberType, oNewValue);
}
}
nCurPos = oBinaryReader.GetCurPos();
}
};
UndoRedoItemSerializable.prototype.GetChangedRange = function () {
let res = null;
let nActionType = this.nActionType;
let classType = this.oClass.nType;
if (classType === AscCommonExcel.g_oUndoRedoCell.nType) {
res = this.oRange;
} else if (classType === AscCommonExcel.g_oUndoRedoWorksheet.nType) {
if (nActionType === AscCH.historyitem_Worksheet_Sort) {
if (this.oData.bbox) {
res = new Asc.Range(this.oData.bbox.c1, this.oData.bbox.r1, this.oData.bbox.c2, this.oData.bbox.r2);
}
} else if (nActionType === AscCH.historyitem_Worksheet_MoveRange) {
//TODO all cols/rows in this.oRange
if (this.oData) {
res = [];
if (this.oData.from) {
res.push(new Asc.Range(this.oData.from.c1, this.oData.from.r1, this.oData.from.c2, this.oData.from.r2));
}
if (this.oData.to) {
res.push(new Asc.Range(this.oData.to.c1, this.oData.to.r1, this.oData.to.c2, this.oData.to.r2));
}
}
}
} else if (classType === AscCommonExcel.g_oUndoRedoComment.nType) {
res = new Asc.Range(this.oData.nCol, this.oData.nRow, this.oData.nCol, this.oData.nRow);
} else if (classType === AscCommonExcel.g_oUndoRedoSortState.nType) {
} else if (classType === AscCommonExcel.g_oUndoRedoCF.nType) {
} else if (classType === AscCommonExcel.g_oUndoRedoAutoFilters.nType) {
} else if (classType === AscCommonExcel.g_oUndoRedoCol.nType) {
} else if (classType === AscCommonExcel.g_oUndoRedoRow.nType) {
}
return res;
};
UndoRedoItemSerializable.prototype.Copy = function () {
let oClass = this.oClass;
if (this.oClass && this.oClass.Copy) {
oClass = this.oClass.Copy();
}
//todo clone oRange oData
return new UndoRedoItemSerializable(oClass, this.nActionType, this.nSheetId, this.oRange, this.oData, this.LocalChange, null);
};
UndoRedoItemSerializable.prototype.ConvertToSimpleActions = function()
{
if (this.oClass) {
if (this.oClass.ConvertToSimpleActions) {
return this.oClass.ConvertToSimpleActions();
} else if (this.oClass.ConvertToSimpleActionsSpreadsheet) {
return this.oClass.ConvertToSimpleActionsSpreadsheet(this.nActionType, this.oData);
}
}
var arrActions = [];
return arrActions;
};
UndoRedoItemSerializable.prototype.ConvertToSimpleChanges = function()
{
if (this.oClass) {
if (this.oClass.ConvertToSimpleChanges) {
return this.oClass.ConvertToSimpleChanges();
} else if (this.oClass.ConvertToSimpleChangesSpreadsheet) {
return this.oClass.ConvertToSimpleChangesSpreadsheet(this);
}
}
return [];
};
UndoRedoItemSerializable.prototype.ConvertFromSimpleActions = function(arrActions)
{
if (this.oClass) {
if (this.oClass.ConvertFromSimpleActions) {
return this.oClass.ConvertFromSimpleActions(arrActions);
} else if (this.oClass.ConvertFromSimpleActionsSpreadsheet) {
return this.oClass.ConvertFromSimpleActionsSpreadsheet(arrActions, this.oData);
}
}
};
UndoRedoItemSerializable.prototype.CreateReverseChange = function () {
if (this.oClass && this.oClass.CreateReverseChange) {
let change = this.oClass.CreateReverseChange();
if (change) {
return new UndoRedoItemSerializable(change, this.nActionType, this.nSheetId, this.oRange, this.oData, this.LocalChange);
} else {
return null;
}
} else if (this.oClass && this.oClass.CreateReverseChangeSpreadsheet) {
return this.oClass.CreateReverseChangeSpreadsheet(this.oClass, this.nActionType, this.nSheetId, this.oRange, this.oData, this.LocalChange);
}
return undefined;
};
UndoRedoItemSerializable.prototype.IsRelated = function(oChanges)
{
if (this.oClass && oChanges.oClass) {
if (this.oClass.IsRelated) {
return this.oClass.IsRelated(oChanges.oClass);
} else if(this.oClass.IsRelatedSpreadsheet){
return this.oClass.IsRelatedSpreadsheet(oChanges.oClass, oChanges.nActionType);
}
}
return false;
};
UndoRedoItemSerializable.prototype.IsContentChange = function () {
if (this.oClass) {
if (this.oClass.IsContentChange) {
return this.oClass.IsContentChange();
} else if (this.oClass.IsContentChangeSpreadsheet) {
return this.oClass.IsContentChangeSpreadsheet(this.nActionType);
}
}
return false;
};
UndoRedoItemSerializable.prototype.CommuteRelated = function (oActionToUndo, oActionOther) {
if (oActionToUndo.oClass && oActionToUndo.oClass.CommuteRelated) {
//ничего не делаем если есть изменения на удаленном листе
if (!AscCommonExcel.g_oUndoRedoWorkbook.CommuteRelatedRemoveSheet(oActionToUndo.nSheetId, oActionOther)) {
return false;
}
//todo don't use global api
let api = window["Asc"]["editor"];
if (api && api.wbModel && api.collaborativeEditing.oRedoObjectParam && api.collaborativeEditing.oRedoObjectParam.snapshot) {
let snapshot = api.collaborativeEditing.oRedoObjectParam.snapshot;
//todo batch transform
api.wbModel._forwardTransformation(snapshot, [oActionToUndo], [oActionOther], true);
}
return oActionToUndo.oClass.CommuteRelated(oActionToUndo, oActionOther);
} else if (oActionToUndo.oClass.WriteToBinary) {
//todo просмотреть измнения автофигур которые зависят от сдвигов
return true;
}
return false;
};
UndoRedoItemSerializable.prototype.ToHistoryItem = function () {
return {
Class : this.oClass || this.Class,
Type : this.nActionType,
SheetId : this.nSheetId,
Range : this.oRange,
Data : this.oData,
LocalChange: this.LocalChange,
Binary : {
Pos : 0,
Len : 0
}
};
};
UndoRedoItemSerializable.prototype.Load = function () {
AscFormat.ExecuteNoHistory(function () {
var api = window["Asc"]["editor"];
if (!api.wb) {
return;
}
AscCommon.History.RedoExecuteItem(this.ToHistoryItem(), api.collaborativeEditing.oRedoObjectParam, true);
}, this);
};
UndoRedoItemSerializable.prototype.Redo = function () {
this.oClass.Redo(this.nActionType, this.oData, this.nSheetId);
};
UndoRedoItemSerializable.prototype.Undo = function () {
this.oClass.Undo(this.nActionType, this.oData, this.nSheetId);
};
UndoRedoItemSerializable.prototype.IsSpreadsheetChange = function () {
return true;
};
function CChangesPointChange(Class, Point, snapshot)
{
//todo наследование от CChangesTableIdDescription
AscDFH.CChangesBase.call(this, Class);
this.Point = Point;
this.snapshot = snapshot;
}
CChangesPointChange.prototype = Object.create(AscDFH.CChangesBase.prototype);
CChangesPointChange.prototype.constructor = CChangesPointChange;
CChangesPointChange.prototype.Properties = {};
CChangesPointChange.prototype.getType = function () {
return UndoRedoDataTypes.Unknown;
};
CChangesPointChange.prototype.getProperties = function () {
return this.Properties;
};
CChangesPointChange.prototype.getProperty = function (nType) {
return null;
};
CChangesPointChange.prototype.setProperty = function (nType, value) {
}
CChangesPointChange.prototype.CreateReverseChangeSpreadsheet = function()
{
let Point = Object.assign({}, this.Point);
let tmp = Point.SelectRangeRedo;
Point.SelectRangeRedo = Point.SelectRange;
Point.SelectRange = tmp;
tmp = Point.RedoSheetId;
Point.RedoSheetId = Point.UndoSheetId;
Point.UndoSheetId = tmp;
return new CChangesPointChange(this.Class, Point, this.snapshot);
};
CChangesPointChange.prototype.CommuteRelated = function (oActionToUndo, oActionOther) {
if(!this.Point || !this.Point.SelectRangeRedo) {
return true;
}
var oSelectRange = null;
if (this.Point.SelectRangeRedo)
oSelectRange = this.Point.SelectRangeRedo;
else if(this.Point.SelectRange)
oSelectRange = this.Point.SelectRange;
if (null != oSelectRange) {
AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedRange(oSelectRange, oActionOther);
}
return true;
}
window['AscDFH'].CChangesPointChange = CChangesPointChange;
//для сохранения в историю и пересылки изменений
var UndoRedoDataTypes = new function () {
this.Unknown = -1;
this.CellSimpleData = 0;
this.CellValue = 1;
this.ValueMultiTextElem = 2;
this.CellValueData = 3;
this.CellData = 4;
this.FromTo = 5;
this.FromToRowCol = 6;
this.FromToHyperlink = 7;
this.IndexSimpleProp = 8;
this.ColProp = 9;
this.RowProp = 10;
this.BBox = 11;
this.StyleFont = 12;
this.StyleFill = 13;
this.StyleNum = 14;
this.StyleBorder = 15;
this.StyleBorderProp = 16;
this.StyleXfs = 17;
this.StyleAlign = 18;
this.Hyperlink = 19;
this.SortData = 20;
this.CommentData = 21;
this.CommentCoords = 22;
this.ChartSeriesData = 24;
this.SheetAdd = 25;
this.SheetRemove = 26;
this.ClrScheme = 28;
this.AutoFilter = 29;
this.AutoFiltersOptions = 30;
this.AutoFilterObj = 31;
this.AutoFiltersOptionsElements = 32;
this.SingleProperty = 33;
this.RgbColor = 34;
this.ThemeColor = 35;
this.CustomFilters = 36;
this.CustomFilter = 37;
this.ColorFilter = 38;
this.DefinedName = 39;
this.AdvancedTableInfoSettings = 40;
this.AddFormatTableOptions = 63;
this.SheetPr = 69;
this.DynamicFilter = 75;
this.Top10 = 76;
this.DataField = 79;
this.PivotTable = 80;
this.PivotField = 81;
this.PivotRowItems = 82;
this.PivotColItems = 83;
this.PivotLocation = 84;
this.PivotCacheDefinition = 85;
this.PivotCacheRecords = 86;
this.BinaryWrapper = 87;
this.BinaryWrapper2 = 88;
this.PivotFieldElem = 89;
this.PivotFilter = 90;
this.Layout = 91;
this.ArrayFormula = 95;
this.StylePatternFill = 100;
this.StyleGradientFill = 101;
this.StyleGradientFillStop = 102;
this.SortState = 115;
this.SortStateData = 116;
this.Slicer = 117;
this.SlicerData = 118;
this.NamedSheetView = 130;
this.NamedSheetViewChange = 131;
this.DataValidation = 140;
this.DataValidationInner = 141;
this.CFData = 150;
this.CFDataInner = 151;
this.ColorScale = 152;
this.CFormulaCF = 153;
this.DataBar = 154;
this.IconSet = 155;
this.ProtectedRangeData = 160;
this.ProtectedRangeDataInner = 161;
this.UserProtectedRange = 165;
this.UserProtectedRangeChange = 166;
this.UserProtectedRangeUserInfo = 167;
this.externalReference = 170;
this.RowColBreaks = 175;
this.LegacyDrawingHFDrawing = 180;
this.PivotFieldItem = 181;
this.PivotCache = 182;
this.CacheFields = 183;
this.CacheFieldElem = 184;
this.CalculatedItems = 185;
this.Create = function (nType) {
switch (nType) {
case this.ValueMultiTextElem:
return new AscCommonExcel.CMultiTextElem();
case this.CellValue:
return new AscCommonExcel.CCellValue();
case this.CellValueData:
return new UndoRedoData_CellValueData();
case this.CellData:
return new UndoRedoData_CellData();
case this.CellSimpleData:
return new UndoRedoData_CellSimpleData();
case this.FromTo:
return new UndoRedoData_FromTo();
case this.FromToRowCol:
return new UndoRedoData_FromToRowCol();
case this.FromToHyperlink:
return new UndoRedoData_FromToHyperlink();
case this.IndexSimpleProp:
return new UndoRedoData_IndexSimpleProp();
case this.ColProp:
return new UndoRedoData_ColProp();
case this.RowProp:
return new UndoRedoData_RowProp();
case this.BBox:
return new UndoRedoData_BBox();
case this.Hyperlink:
return new AscCommonExcel.Hyperlink();
case this.SortData:
return new UndoRedoData_SortData();
case this.StyleFont:
return new AscCommonExcel.Font();
case this.StyleFill:
return new AscCommonExcel.Fill();
case this.StylePatternFill:
return new AscCommonExcel.PatternFill();
case this.StyleGradientFill:
return new AscCommonExcel.GradientFill();
case this.StyleGradientFillStop:
return new AscCommonExcel.GradientStop();
case this.StyleNum:
return new AscCommonExcel.Num();
case this.StyleBorder:
return new AscCommonExcel.Border();
case this.StyleBorderProp:
return new AscCommonExcel.BorderProp();
case this.StyleXfs:
return new AscCommonExcel.CellXfs();
case this.StyleAlign:
return new AscCommonExcel.Align();
case this.CommentData:
return new Asc.asc_CCommentData();
case this.CommentCoords:
return new AscCommonExcel.asc_CCommentCoords();
case this.ChartSeriesData:
return new AscFormat.asc_CChartSeria();
case this.SheetAdd:
return new UndoRedoData_SheetAdd();
case this.SheetRemove:
return new UndoRedoData_SheetRemove();
case this.ClrScheme:
return new UndoRedoData_ClrScheme();
case this.AutoFilter:
return new UndoRedoData_AutoFilter();
case this.AutoFiltersOptions:
return new Asc.AutoFiltersOptions();
case this.AutoFilterObj:
return new Asc.AutoFilterObj();
case this.AdvancedTableInfoSettings:
return new Asc.AdvancedTableInfoSettings();
case this.CustomFilters:
return new Asc.CustomFilters();
case this.CustomFilter:
return new Asc.CustomFilter();
case this.ColorFilter:
return new Asc.ColorFilter();
case this.DynamicFilter:
return new Asc.DynamicFilter();
case this.Top10:
return new Asc.Top10();
case this.AutoFiltersOptionsElements:
return new AscCommonExcel.AutoFiltersOptionsElements();
case this.AddFormatTableOptions:
return new AscCommonExcel.AddFormatTableOptions();
case this.SingleProperty:
return new UndoRedoData_SingleProperty();
case this.RgbColor:
return new AscCommonExcel.RgbColor();
case this.ThemeColor:
return new AscCommonExcel.ThemeColor();
case this.DefinedName:
return new UndoRedoData_DefinedNames();
case this.PivotTable:
return new UndoRedoData_PivotTable();
case this.PivotCache:
return new UndoRedoData_PivotCache();
case this.CacheFields:
return new UndoRedoData_CacheFields();
case this.DataField:
return new UndoRedoData_DataField();
case this.PivotField:
return new UndoRedoData_PivotField();
case this.PivotRowItems:
return new CT_rowItems();
case this.PivotColItems:
return new CT_colItems();
case this.PivotLocation:
return new CT_Location();
case this.PivotCacheDefinition:
return new CT_PivotCacheDefinition();
case this.PivotCacheRecords:
return new CT_PivotCacheRecords();
case this.PivotFieldElem:
return new CT_PivotField(true);
case this.CacheFieldElem:
return new CT_CacheField();
case this.CalculatedItems:
return new CT_CalculatedItems();
case this.PivotFilter:
return new CT_PivotFilter();
case this.BinaryWrapper:
return new UndoRedoData_BinaryWrapper();
case this.BinaryWrapper2:
return new UndoRedoData_BinaryWrapper2();
case this.Layout:
return new UndoRedoData_Layout();
case this.ArrayFormula:
return new UndoRedoData_ArrayFormula();
case this.SortState:
return new AscCommonExcel.SortState();
case this.SortStateData:
return new AscCommonExcel.UndoRedoData_SortState();
case this.SlicerData:
return new AscCommonExcel.UndoRedoData_Slicer();
case this.Slicer:
return new window['Asc'].CT_slicer();
case this.NamedSheetView:
return new window['Asc'].CT_NamedSheetView();
case this.NamedSheetViewChange:
if (window['AscCommonExcel'].UndoRedoData_NamedSheetView) {
return new window['AscCommonExcel'].UndoRedoData_NamedSheetView();
}
break;
case this.DataValidationInner:
return new window['AscCommonExcel'].CDataValidation();
case this.DataValidation:
return new window['AscCommonExcel'].UndoRedoData_DataValidation();
case this.CFData:
return new AscCommonExcel.UndoRedoData_CF();
case this.CFDataInner:
return new AscCommonExcel.CConditionalFormattingRule();
case this.ColorScale:
return new AscCommonExcel.CColorScale();
case this.CFormulaCF:
return new AscCommonExcel.CFormulaCF();
case this.DataBar:
return new AscCommonExcel.CDataBar();
case this.IconSet:
return new AscCommonExcel.CIconSet();
case this.ProtectedRangeData:
return new AscCommonExcel.UndoRedoData_ProtectedRange();
case this.ProtectedRangeDataInner:
return new Asc.CProtectedRange();
case this.externalReference:
return new AscCommonExcel.ExternalReference();
case this.UserProtectedRange:
return new Asc.CUserProtectedRange();
case this.UserProtectedRangeChange:
return new AscCommonExcel.UndoRedoData_UserProtectedRange();
case this.UserProtectedRangeUserInfo:
return new Asc.CUserProtectedRangeUserInfo();
case this.RowColBreaks:
return new AscCommonExcel.UndoRedoData_RowColBreaks();
case this.LegacyDrawingHFDrawing:
return new AscCommonExcel.UndoRedoData_LegacyDrawingHFDrawing();
case this.PivotFieldItem:
return new AscCommonExcel.UndoRedoData_PivotFieldItem();
}
return null;
};
};
function UndoRedoData_CellSimpleData(nRow, nCol, oOldVal, oNewVal, sFormula) {
this.nRow = nRow;
this.nCol = nCol;
this.oOldVal = oOldVal;
this.oNewVal = oNewVal;
this.sFormula = sFormula;//todo unused
}
UndoRedoData_CellSimpleData.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_CellSimpleData(this.nRow, this.nCol, this.oNewVal, this.oOldVal, this.sFormula);
}
UndoRedoData_CellSimpleData.prototype.Properties = {
Row: 0, Col: 1, NewVal: 2
};
UndoRedoData_CellSimpleData.prototype.getType = function () {
return UndoRedoDataTypes.CellSimpleData;
};
UndoRedoData_CellSimpleData.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_CellSimpleData.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.Row:
return this.nRow;
break;
case this.Properties.Col:
return this.nCol;
break;
case this.Properties.NewVal:
return this.oNewVal;
break;
}
return null;
};
UndoRedoData_CellSimpleData.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.Row:
this.nRow = value;
break;
case this.Properties.Col:
this.nCol = value;
break;
case this.Properties.NewVal:
this.oNewVal = value;
break;
}
};
UndoRedoData_CellSimpleData.prototype.applyCollaborative = function (nSheetId, collaborativeEditing) {
let nRowOld = this.nRow;
let nColOld = this.nCol;
this.nRow = collaborativeEditing.getLockMeRow2(nSheetId, this.nRow);
this.nCol = collaborativeEditing.getLockMeColumn2(nSheetId, this.nCol);
return this.nRow !== nRowOld || this.nCol !== nColOld;
};
function UndoRedoData_CellData(value, style) {
this.value = value;
this.style = style;
}
UndoRedoData_CellData.prototype.Properties = {
value: 0, style: 1
};
UndoRedoData_CellData.prototype.getType = function () {
return UndoRedoDataTypes.CellData;
};
UndoRedoData_CellData.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_CellData.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.value:
return this.value;
break;
case this.Properties.style:
return this.style;
break;
}
return null;
};
UndoRedoData_CellData.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.value:
this.value = value;
break;
case this.Properties.style:
this.style = value;
break;
}
};
function UndoRedoData_CellValueData(sFormula, oValue, formulaRef, bCa) {
this.formula = sFormula;
this.formulaRef = formulaRef;
this.value = oValue;
this.ca = bCa;
}
UndoRedoData_CellValueData.prototype.Properties = {
formula: 0, value: 1, formulaRef: 2, ca: 3
};
UndoRedoData_CellValueData.prototype.isEqual = function (val) {
if (null == val) {
return false;
}
if (this.formula != val.formula) {
return false;
}
if ((this.formulaRef && val.formulaRef &&
!(this.formulaRef.r1 === val.formulaRef.r1 && this.formulaRef.c1 === val.formulaRef.c1 && this.formulaRef.r2 === val.formulaRef.r2 &&
this.formulaRef.c2 === val.formulaRef.c2)) || (this.formulaRef !== val.formulaRef)) {
return false;
}
if (this.value.isEqual(val.value)) {
return true;
}
return false;
};
UndoRedoData_CellValueData.prototype.getType = function () {
return UndoRedoDataTypes.CellValueData;
};
UndoRedoData_CellValueData.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_CellValueData.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.formula:
return this.formula;
case this.Properties.value:
return this.value;
case this.Properties.formulaRef:
return this.formulaRef ? new UndoRedoData_BBox(this.formulaRef) : null;
case this.Properties.ca:
return this.ca;
}
return null;
};
UndoRedoData_CellValueData.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.formula:
this.formula = value;
break;
case this.Properties.value:
this.value = value;
break;
case this.Properties.formulaRef:
this.formulaRef = value ? new Asc.Range(value.c1, value.r1, value.c2, value.r2) : null;
break;
case this.Properties.ca:
this.ca = value;
break;
}
};
function UndoRedoData_FromToRowCol(bRow, from, to) {
this.bRow = bRow;
this.from = from;
this.to = to;
}
UndoRedoData_FromToRowCol.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_FromToRowCol(!this.bRow, this.from, this.to);
}
UndoRedoData_FromToRowCol.prototype.Properties = {
from: 0, to: 1, bRow: 2
};
UndoRedoData_FromToRowCol.prototype.getType = function () {
return UndoRedoDataTypes.FromToRowCol;
};
UndoRedoData_FromToRowCol.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_FromToRowCol.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.from:
return this.from;
break;
case this.Properties.to:
return this.to;
break;
case this.Properties.bRow:
return this.bRow;
break;
}
return null;
};
UndoRedoData_FromToRowCol.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
case this.Properties.bRow:
this.bRow = value;
break;
}
};
UndoRedoData_FromToRowCol.prototype.applyCollaborative = function (nSheetId, collaborativeEditing) {
let fromOld = this.from;
let toOld = this.to;
if (this.bRow) {
this.from = collaborativeEditing.getLockMeRow2(nSheetId, this.from);
this.to = collaborativeEditing.getLockMeRow2(nSheetId, this.to);
} else {
this.from = collaborativeEditing.getLockMeColumn2(nSheetId, this.from);
this.to = collaborativeEditing.getLockMeColumn2(nSheetId, this.to);
}
return this.from !== fromOld || this.to !== toOld;
};
function UndoRedoData_FromTo(from, to, copyRange, sheetIdTo) {
this.from = from;
this.to = to;
this.copyRange = copyRange;
this.sheetIdTo = sheetIdTo;
}
UndoRedoData_FromTo.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_FromTo(this.to, this.from, this.copyRange, this.sheetIdTo);
}
UndoRedoData_FromTo.prototype.Properties = {
from: 0, to: 1, copyRange: 2, sheetIdTo: 3
};
UndoRedoData_FromTo.prototype.getType = function () {
return UndoRedoDataTypes.FromTo;
};
UndoRedoData_FromTo.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_FromTo.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
case this.Properties.copyRange:
return this.copyRange;
case this.Properties.sheetIdTo:
return this.sheetIdTo;
}
return null;
};
UndoRedoData_FromTo.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
case this.Properties.copyRange:
this.copyRange = value;
break;
case this.Properties.sheetIdTo:
this.sheetIdTo = value;
break;
}
};
function UndoRedoData_FromToHyperlink(oBBoxFrom, oBBoxTo, hyperlink) {
this.from = new UndoRedoData_BBox(oBBoxFrom);
this.to = new UndoRedoData_BBox(oBBoxTo);
this.hyperlink = hyperlink;
}
UndoRedoData_FromToHyperlink.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_FromToHyperlink(this.to, this.from, this.hyperlink);
}
UndoRedoData_FromToHyperlink.prototype.Properties = {
from: 0, to: 1, hyperlink: 2
};
UndoRedoData_FromToHyperlink.prototype.getType = function () {
return UndoRedoDataTypes.FromToHyperlink;
};
UndoRedoData_FromToHyperlink.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_FromToHyperlink.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
case this.Properties.hyperlink:
return this.hyperlink;
}
return null;
};
UndoRedoData_FromToHyperlink.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
case this.Properties.hyperlink:
this.hyperlink = value;
break;
}
};
function UndoRedoData_IndexSimpleProp(index, bRow, oOldVal, oNewVal) {
this.index = index;
this.bRow = bRow;
this.oOldVal = oOldVal;
this.oNewVal = oNewVal;
}
UndoRedoData_IndexSimpleProp.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_IndexSimpleProp(this.index, this.bRow, this.oNewVal, this.oOldVal);
}
UndoRedoData_IndexSimpleProp.prototype.Properties = {
index: 0, oNewVal: 1
};
UndoRedoData_IndexSimpleProp.prototype.getType = function () {
return UndoRedoDataTypes.IndexSimpleProp;
};
UndoRedoData_IndexSimpleProp.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_IndexSimpleProp.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.index:
return this.index;
case this.Properties.oNewVal:
return this.oNewVal;
}
return null;
};
UndoRedoData_IndexSimpleProp.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.index:
this.index = value;
break;
case this.Properties.oNewVal:
this.oNewVal = value;
break;
}
};
UndoRedoData_IndexSimpleProp.prototype.applyCollaborative = function (nSheetId, collaborativeEditing) {
let indexOld = this.index;
if (this.bRow) {
this.index = collaborativeEditing.getLockMeRow2(nSheetId, this.index);
} else {
this.index = collaborativeEditing.getLockMeColumn2(nSheetId, this.index);
}
return this.index !== indexOld;
};
function UndoRedoData_ColProp(col) {
if (null != col) {
this.width = col.width;
this.hd = col.hd;
this.CustomWidth = col.CustomWidth;
this.BestFit = col.BestFit;
this.OutlineLevel = col.outlineLevel;
this.Collapsed = col.collapsed;
} else {
this.width = null;
this.hd = null;
this.CustomWidth = null;
this.BestFit = null;
this.OutlineLevel = null;
this.Collapsed = null;
}
}
UndoRedoData_ColProp.prototype.Properties = {
width: 0, hd: 1, CustomWidth: 2, BestFit: 3, OutlineLevel: 4, Collapsed: 5
};
UndoRedoData_ColProp.prototype.isEqual = function (val) {
var defaultColWidth = AscCommonExcel.oDefaultMetrics.ColWidthChars;
return this.hd == val.hd && this.CustomWidth == val.CustomWidth &&
((this.BestFit == val.BestFit && this.width == val.width) ||
((null == this.width || defaultColWidth == this.width) &&
(null == this.BestFit || true == this.BestFit) &&
(null == val.width || defaultColWidth == val.width) &&
(null == val.BestFit || true == val.BestFit))) && this.OutlineLevel == val.OutlineLevel && this.Collapsed == val.Collapsed;
};
UndoRedoData_ColProp.prototype.getType = function () {
return UndoRedoDataTypes.ColProp;
};
UndoRedoData_ColProp.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_ColProp.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.width:
return this.width;
case this.Properties.hd:
return this.hd;
case this.Properties.CustomWidth:
return this.CustomWidth;
case this.Properties.BestFit:
return this.BestFit;
case this.Properties.OutlineLevel:
return this.OutlineLevel;
case this.Properties.Collapsed:
return this.Collapsed;
}
return null;
};
UndoRedoData_ColProp.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.width:
this.width = value;
break;
case this.Properties.hd:
this.hd = value;
break;
case this.Properties.CustomWidth:
this.CustomWidth = value;
break;
case this.Properties.BestFit:
this.BestFit = value;
break;
case this.Properties.OutlineLevel:
this.OutlineLevel = value;
break;
case this.Properties.Collapsed:
this.Collapsed = value;
break;
}
};
function UndoRedoData_RowProp(row) {
if (null != row) {
this.h = row.getHeight();
this.hd = row.getHidden();
this.CustomHeight = row.getCustomHeight();
this.OutlineLevel = row.getOutlineLevel();
this.Collapsed = row.getCollapsed();
} else {
this.h = null;
this.hd = null;
this.CustomHeight = null;
this.OutlineLevel = null;
this.Collapsed = null;
}
}
UndoRedoData_RowProp.prototype.Properties = {
h: 0, hd: 1, CustomHeight: 2, OutlineLevel: 3, Collapsed: 4
};
UndoRedoData_RowProp.prototype.isEqual = function (val) {
var defaultRowHeight = AscCommonExcel.oDefaultMetrics.RowHeight;
return this.hd == val.hd && ((this.CustomHeight == val.CustomHeight && this.h == val.h) ||
((null == this.h || defaultRowHeight == this.h) &&
(null == this.CustomHeight || false == this.CustomHeight) &&
(null == val.h || defaultRowHeight == val.h) &&
(null == val.CustomHeight || false == val.CustomHeight))) && this.OutlineLevel == val.OutlineLevel && this.Collapsed == val.Collapsed;
};
UndoRedoData_RowProp.prototype.getType = function () {
return UndoRedoDataTypes.RowProp;
};
UndoRedoData_RowProp.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_RowProp.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.h:
return this.h;
case this.Properties.hd:
return this.hd;
case this.Properties.CustomHeight:
return this.CustomHeight;
case this.Properties.OutlineLevel:
return this.OutlineLevel;
case this.Properties.Collapsed:
return this.Collapsed;
}
return null;
};
UndoRedoData_RowProp.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.h:
this.h = value;
break;
case this.Properties.hd:
this.hd = value;
break;
case this.Properties.CustomHeight:
this.CustomHeight = value;
break;
case this.Properties.OutlineLevel:
this.OutlineLevel = value;
break;
case this.Properties.Collapsed:
this.Collapsed = value;
break;
}
};
function UndoRedoData_BBox(oBBox) {
if (null != oBBox) {
this.c1 = oBBox.c1;
this.r1 = oBBox.r1;
this.c2 = oBBox.c2;
this.r2 = oBBox.r2;
} else {
this.c1 = null;
this.r1 = null;
this.c2 = null;
this.r2 = null;
}
}
UndoRedoData_BBox.prototype.Properties = {
c1: 0, r1: 1, c2: 2, r2: 3
};
UndoRedoData_BBox.prototype.getType = function () {
return UndoRedoDataTypes.BBox;
};
UndoRedoData_BBox.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_BBox.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.c1:
return this.c1;
case this.Properties.r1:
return this.r1;
case this.Properties.c2:
return this.c2;
case this.Properties.r2:
return this.r2;
}
return null;
};
UndoRedoData_BBox.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.c1:
this.c1 = value;
break;
case this.Properties.r1:
this.r1 = value;
break;
case this.Properties.c2:
this.c2 = value;
break;
case this.Properties.r2:
this.r2 = value;
break;
}
};
UndoRedoData_BBox.prototype.applyCollaborative = function (nSheetId, collaborativeEditing) {
let r1old = this.r1;
let r2old = this.r2;
let c1old = this.c1;
let c2old = this.c2;
this.r1 = collaborativeEditing.getLockMeRow2(nSheetId, this.r1);
this.r2 = collaborativeEditing.getLockMeRow2(nSheetId, this.r2);
this.c1 = collaborativeEditing.getLockMeColumn2(nSheetId, this.c1);
this.c2 = collaborativeEditing.getLockMeColumn2(nSheetId, this.c2);
return this.r1 !== r1old || this.r2 !== r2old || this.c1 !== c1old || this.c2 !== c2old;
};
function UndoRedoData_FrozenBBox(oBBox) {
if (null != oBBox) {
this.c1 = oBBox.c1;
this.r1 = oBBox.r1;
this.c2 = oBBox.c2;
this.r2 = oBBox.r2;
} else {
this.c1 = null;
this.r1 = null;
this.c2 = null;
this.r2 = null;
}
}
UndoRedoData_FrozenBBox.prototype = Object.create(UndoRedoData_BBox.prototype);
UndoRedoData_FrozenBBox.prototype.applyCollaborative = function (nSheetId, collaborativeEditing) {
let r1old = this.r1;
let r2old = this.r2;
let c1old = this.c1;
let c2old = this.c2;
var _r1 = this.r1 > 0 ? collaborativeEditing.getLockMeRow2(nSheetId, this.r1 - 1) : null;
var _r2 = this.r2 > 0 ? collaborativeEditing.getLockMeRow2(nSheetId, this.r2 - 1) : null;
var _c1 = this.c1 > 0 ? collaborativeEditing.getLockMeRow2(nSheetId, this.c1 - 1) : null;
var _c2 = this.c2 > 0 ? collaborativeEditing.getLockMeRow2(nSheetId, this.c2 - 1) : null;
if (_r1 !== null && _r1 !== this.r1 - 1) {
this.r1 = _r1 + 1;
}
if (_r2 !== null && _r2 !== this.r2 - 1) {
this.r2 = _r2 + 1;
}
if (_c1 !== null && _c1 !== this.c1 - 1) {
this.c1 = _c1 + 1;
}
if (_c2 !== null && _c2 !== this.c2 - 1) {
this.c2 = _c2 + 1;
}
return this.r1 !== r1old || this.r2 !== r2old || this.c1 !== c1old || this.c2 !== c2old;
};
function UndoRedoData_SortData(bbox, places, sortByRow) {
this.bbox = bbox;
this.places = places;
this.sortByRow = sortByRow;
}
UndoRedoData_SortData.prototype.Properties = {
bbox: 0, places: 1, sortByRow: 2
};
UndoRedoData_SortData.prototype.getType = function () {
return UndoRedoDataTypes.SortData;
};
UndoRedoData_SortData.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_SortData.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.bbox:
return this.bbox;
case this.Properties.places:
return this.places;
case this.Properties.sortByRow:
return this.sortByRow;
}
return null;
};
UndoRedoData_SortData.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.bbox:
this.bbox = value;
break;
case this.Properties.places:
this.places = value;
break;
case this.Properties.sortByRow:
this.sortByRow = value;
break;
}
};
UndoRedoData_SortData.prototype.applyCollaborative = function (nSheetId, collaborativeEditing) {
let res = false;
let r1old = this.bbox.r1;
let r2old = this.bbox.r2;
let c1old = this.bbox.c1;
let c2old = this.bbox.c2;
this.bbox.r1 = collaborativeEditing.getLockMeRow2(nSheetId, this.bbox.r1);
this.bbox.r2 = collaborativeEditing.getLockMeRow2(nSheetId, this.bbox.r2);
this.bbox.c1 = collaborativeEditing.getLockMeColumn2(nSheetId, this.bbox.c1);
this.bbox.c2 = collaborativeEditing.getLockMeColumn2(nSheetId, this.bbox.c2);
res = this.bbox.r1 !== r1old || this.bbox.r2 !== r2old || this.bbox.c1 !== c1old || this.bbox.c2 !== c2old;
for (var i = 0, length = this.places.length; i < length; ++i) {
var place = this.places[i];
let fromOld = place.from;
let toOld = place.to;
if (this.sortByRow) {
place.from = collaborativeEditing.getLockMeColumn2(nSheetId, place.from);
place.to = collaborativeEditing.getLockMeColumn2(nSheetId, place.to);
} else {
place.from = collaborativeEditing.getLockMeRow2(nSheetId, place.from);
place.to = collaborativeEditing.getLockMeRow2(nSheetId, place.to);
}
res = res || place.from !== fromOld || place.to !== toOld;
}
return res;
};
function UndoRedoData_PivotTable(pivot, from, to) {
this.pivot = pivot;
this.from = from;
this.to = to;
}
UndoRedoData_PivotTable.prototype.Properties = {
pivot: 0, from: 1, to: 2
};
UndoRedoData_PivotTable.prototype.getType = function () {
return UndoRedoDataTypes.PivotTable;
};
UndoRedoData_PivotTable.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_PivotTable.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.pivot:
return this.pivot;
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
}
return null;
};
UndoRedoData_PivotTable.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.pivot:
this.pivot = value;
break;
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
}
};
function UndoRedoData_PivotCache(pivot, from, to) {
this.pivot = pivot;
this.from = from;
this.to = to;
}
UndoRedoData_PivotCache.prototype.Properties = {
pivot: 0, from: 1, to: 2
};
UndoRedoData_PivotCache.prototype.getType = function () {
return UndoRedoDataTypes.PivotCache;
};
UndoRedoData_PivotCache.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_PivotCache.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.pivot:
return this.pivot;
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
}
return null;
};
UndoRedoData_PivotCache.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.pivot:
this.pivot = value;
break;
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
}
};
function UndoRedoData_CacheFields(pivot, index, from, to) {
this.pivot = pivot;
this.index = index;
this.from = from;
this.to = to;
}
UndoRedoData_CacheFields.prototype.Properties = {
pivot: 0, index: 1, from: 2, to: 3
};
UndoRedoData_CacheFields.prototype.getType = function () {
return UndoRedoDataTypes.CacheFields;
};
UndoRedoData_CacheFields.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_CacheFields.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.pivot:
return this.pivot;
case this.Properties.index:
return this.index;
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
}
return null;
};
UndoRedoData_CacheFields.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.pivot:
this.pivot = value;
break;
case this.Properties.index:
this.index = value;
break;
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
}
};
function UndoRedoData_PivotTableRedo(pivot, from, to) {
this.pivot = pivot;
this.from = from;
this.to = to;
}
UndoRedoData_PivotTableRedo.prototype = Object.create(UndoRedoData_PivotTable.prototype);
UndoRedoData_PivotTableRedo.prototype.Properties = {
pivot: 0, to: 2
};
function UndoRedoData_DataField(pivot, from, to, name) {
this.pivot = pivot;
this.from = from;
this.to = to;
this.name = name;
}
UndoRedoData_DataField.prototype.Properties = {
pivot: 0, from: 1, to: 2, name: 3
};
UndoRedoData_DataField.prototype.getType = function () {
return UndoRedoDataTypes.DataField;
};
UndoRedoData_DataField.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_DataField.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.pivot:
return this.pivot;
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
case this.Properties.name:
return this.name;
}
return null;
};
UndoRedoData_DataField.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.pivot:
this.pivot = value;
break;
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
case this.Properties.name:
this.name = value;
break;
}
};
function UndoRedoData_PivotField(pivot, index, from, to) {
this.pivot = pivot;
this.index = index;
this.from = from;
this.to = to;
}
UndoRedoData_PivotField.prototype.Properties = {
pivot: 0, index: 1, from: 2, to: 3
};
UndoRedoData_PivotField.prototype.getType = function () {
return UndoRedoDataTypes.PivotField;
};
UndoRedoData_PivotField.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_PivotField.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.pivot:
return this.pivot;
case this.Properties.index:
return this.index;
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
}
return null;
};
UndoRedoData_PivotField.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.pivot:
this.pivot = value;
break;
case this.Properties.index:
this.index = value;
break;
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
}
};
function UndoRedoData_PivotFieldItem(pivot, pivotIndex, itemIndex, from, to) {
this.pivot = pivot;
this.pivotIndex = pivotIndex;
this.itemIndex = itemIndex;
this.from = from;
this.to = to;
}
UndoRedoData_PivotFieldItem.prototype.Properties = {
pivot: 0, pivotIndex: 1, itemIndex: 2, from: 3, to: 4
};
UndoRedoData_PivotFieldItem.prototype.getType = function () {
return UndoRedoDataTypes.PivotFieldItem;
};
UndoRedoData_PivotFieldItem.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_PivotFieldItem.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.pivot:
return this.pivot;
case this.Properties.pivotIndex:
return this.pivotIndex;
case this.Properties.itemIndex:
return this.itemIndex;
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
}
return null;
};
UndoRedoData_PivotFieldItem.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.pivot:
this.pivot = value;
break;
case this.Properties.pivotIndex:
this.pivotIndex = value;
break;
case this.Properties.itemIndex:
this.itemIndex = value;
break;
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
}
};
function UndoRedoData_BinaryWrapper(data) {
this.binary = null;
this.len = 0;
this.Id = null;
if (data) {
var memory = new AscCommon.CMemory(true);
memory.CheckSize(1000);
data.Write_ToBinary2(memory);
this.Id = data.Get_Id();
this.len = memory.GetCurPosition();
this.binary = memory.GetData();
}
}
UndoRedoData_BinaryWrapper.prototype.getType = function () {
return UndoRedoDataTypes.BinaryWrapper;
};
UndoRedoData_BinaryWrapper.prototype.Write_ToBinary2 = function (writer) {
writer.WriteString2(this.Id);
writer.WriteLong(this.len);
writer.WriteBuffer(this.binary, 0, this.len);
};
UndoRedoData_BinaryWrapper.prototype.Read_FromBinary2 = function (reader) {
this.Id = reader.GetString2();
this.len = reader.GetLong();
this.binary = reader.GetBufferUint8(this.len);
};
UndoRedoData_BinaryWrapper.prototype.getData = function () {
var reader = new AscCommon.FT_Stream2(this.binary, this.len);
var data = AscCommon.g_oTableId.GetClassFromFactory(reader.GetLong());
data.Id = this.Id;
data.Read_FromBinary2(reader);
return data;
};
UndoRedoData_BinaryWrapper.prototype.readData = function (data) {
var reader = new AscCommon.FT_Stream2(this.binary, this.len);
data.Read_FromBinary2(reader);
};
function UndoRedoData_BinaryWrapper2(data) {
this.binary = null;
this.len = 0;
if (data) {
var memory = new AscCommon.CMemory(true);
memory.CheckSize(1000);
data.Write_ToBinary2(memory);
this.len = memory.GetCurPosition();
this.binary = memory.GetData();
}
}
UndoRedoData_BinaryWrapper2.prototype.getType = function () {
return UndoRedoDataTypes.BinaryWrapper2;
};
UndoRedoData_BinaryWrapper2.prototype.Write_ToBinary2 = function (writer) {
writer.WriteLong(this.len);
writer.WriteBuffer(this.binary, 0, this.len);
};
UndoRedoData_BinaryWrapper2.prototype.Read_FromBinary2 = function (reader) {
this.len = reader.GetLong();
this.binary = reader.GetBufferUint8(this.len);
};
UndoRedoData_BinaryWrapper2.prototype.initObject = function (data) {
var reader = new AscCommon.FT_Stream2(this.binary, this.len);
data.Read_FromBinary2(reader);
};
function UndoRedoData_Layout(from, to) {
this.from = from;
this.to = to;
}
UndoRedoData_Layout.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_Layout(this.to, this.from);
}
UndoRedoData_Layout.prototype.Properties = {
from: 0, to: 1
};
UndoRedoData_Layout.prototype.getType = function () {
return UndoRedoDataTypes.Layout;
};
UndoRedoData_Layout.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_Layout.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
}
return null;
};
UndoRedoData_Layout.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
}
};
function UndoRedoData_SheetAdd(insertBefore, name, sheetidfrom, sheetid, tableNames, opt_sheet, opt_sheetidToAdd) {
this.insertBefore = insertBefore;
this.name = name;
this.sheetidfrom = sheetidfrom;
this.sheetid = sheetid;
this.opt_sheet = opt_sheet;
this.opt_sheetidToAdd = opt_sheetidToAdd;
//Эти поля заполняются после Undo/Redo
this.sheet = null;
this.tableNames = tableNames;
}
UndoRedoData_SheetAdd.prototype.Properties = {
name: 0, sheetidfrom: 1, sheetid: 2, tableNames: 3, insertBefore: 4, opt_sheet: 5, opt_sheetidToAdd: 6
};
UndoRedoData_SheetAdd.prototype.getType = function () {
return UndoRedoDataTypes.SheetAdd;
};
UndoRedoData_SheetAdd.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_SheetAdd.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.name:
return this.name;
break;
case this.Properties.sheetidfrom:
return this.sheetidfrom;
break;
case this.Properties.sheetid:
return this.sheetid;
break;
case this.Properties.tableNames:
return this.tableNames;
break;
case this.Properties.insertBefore:
return this.insertBefore;
break;
case this.Properties.opt_sheet:
return this.opt_sheet;
break;
case this.Properties.opt_sheetidToAdd:
return this.opt_sheetidToAdd;
break;
}
return null;
};
UndoRedoData_SheetAdd.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.name:
this.name = value;
break;
case this.Properties.sheetidfrom:
this.sheetidfrom = value;
break;
case this.Properties.sheetid:
this.sheetid = value;
break;
case this.Properties.tableNames:
this.tableNames = value;
break;
case this.Properties.insertBefore:
this.insertBefore = value;
break;
case this.Properties.opt_sheet:
this.opt_sheet = value;
break;
case this.Properties.opt_sheetidToAdd:
this.opt_sheetidToAdd = value;
break;
}
};
function UndoRedoData_SheetRemove(index, sheetId, sheet) {
this.index = index;
this.sheetId = sheetId;
this.sheet = sheet;
}
UndoRedoData_SheetRemove.prototype.Properties = {
index: 0, sheetId: 1, sheet: 2
};
UndoRedoData_SheetRemove.prototype.getType = function () {
return UndoRedoDataTypes.SheetRemove;
};
UndoRedoData_SheetRemove.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_SheetRemove.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.index:
return this.index;
case this.Properties.sheetId:
return this.sheetId;
case this.Properties.sheet:
return this.sheet;
}
return null;
};
UndoRedoData_SheetRemove.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.index:
this.index = value;
break;
case this.Properties.sheetId:
this.sheetId = value;
break;
case this.Properties.sheet:
this.sheet = value;
break;
}
};
function UndoRedoData_DefinedNames(name, ref, sheetId, type, isXLNM, hidden) {
this.name = name;
this.ref = ref;
this.sheetId = sheetId;
this.type = type;
this.isXLNM = isXLNM;
this.hidden = hidden === undefined ? false : hidden;
}
UndoRedoData_DefinedNames.prototype.Properties = {
name: 0, ref: 1, sheetId: 2, type: 4, isXLNM: 5, hidden: 6
};
UndoRedoData_DefinedNames.prototype.getType = function () {
return UndoRedoDataTypes.DefinedName;
};
UndoRedoData_DefinedNames.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_DefinedNames.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.name:
return this.name;
case this.Properties.ref:
return this.ref;
case this.Properties.sheetId:
return this.sheetId;
case this.Properties.type:
return this.type;
case this.Properties.isXLNM:
return this.isXLNM;
case this.Properties.hidden:
return this.hidden;
}
return null;
};
UndoRedoData_DefinedNames.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.name:
this.name = value;
break;
case this.Properties.ref:
this.ref = value;
break;
case this.Properties.sheetId:
this.sheetId = value;
break;
case this.Properties.type:
this.type = value;
break;
case this.Properties.isXLNM:
this.isXLNM = value;
break;
case this.Properties.hidden:
this.hidden = value;
break;
}
};
function UndoRedoData_ClrScheme(oldVal, newVal) {
this.oldVal = oldVal;
this.newVal = newVal;
}
UndoRedoData_ClrScheme.prototype.getType = function () {
return UndoRedoDataTypes.ClrScheme;
};
UndoRedoData_ClrScheme.prototype.Write_ToBinary2 = function (writer) {
};
UndoRedoData_ClrScheme.prototype.Read_FromBinary2 = function (reader) {
};
function UndoRedoData_AutoFilter() {
this.undo = null;
this.activeCells = null;
this.styleName = null;
this.type = null;
this.cellId = null;
this.autoFiltersObject = null;
this.addFormatTableOptionsObj = null;
this.moveFrom = null;
this.moveTo = null;
this.bWithoutFilter = null;
this.displayName = null;
this.val = null;
this.ShowColumnStripes = null;
this.ShowFirstColumn = null;
this.ShowLastColumn = null;
this.ShowRowStripes = null;
this.HeaderRowCount = null;
this.TotalsRowCount = null;
this.color = null;
this.tablePart = null;
this.nCol = null;
this.nRow = null;
this.formula = null;
this.totalFunction = null;
this.viewId = null;
this.redoColumnName = null;
}
UndoRedoData_AutoFilter.prototype.Properties = {
activeCells: 0,
styleName: 1,
type: 2,
cellId: 3,
autoFiltersObject: 4,
addFormatTableOptionsObj: 5,
moveFrom: 6,
moveTo: 7,
bWithoutFilter: 8,
displayName: 9,
val: 10,
ShowColumnStripes: 11,
ShowFirstColumn: 12,
ShowLastColumn: 13,
ShowRowStripes: 14,
HeaderRowCount: 15,
TotalsRowCount: 16,
color: 17,
tablePart: 18,
nCol: 19,
nRow: 20,
formula: 21,
totalFunction: 22,
viewId: 23,
redoColumnName: 24
};
UndoRedoData_AutoFilter.prototype.getType = function () {
return UndoRedoDataTypes.AutoFilter;
};
UndoRedoData_AutoFilter.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_AutoFilter.prototype.getProperty = function (nType, nSheetId) {
switch (nType) {
case this.Properties.activeCells:
return new UndoRedoData_BBox(this.activeCells);
case this.Properties.styleName:
return this.styleName;
case this.Properties.type:
return this.type;
case this.Properties.cellId:
return this.cellId;
case this.Properties.autoFiltersObject:
return this.autoFiltersObject;
case this.Properties.addFormatTableOptionsObj:
return this.addFormatTableOptionsObj;
case this.Properties.moveFrom:
return new UndoRedoData_BBox(this.moveFrom);
case this.Properties.moveTo:
return new UndoRedoData_BBox(this.moveTo);
case this.Properties.bWithoutFilter:
return this.bWithoutFilter;
case this.Properties.displayName:
return this.displayName;
case this.Properties.val:
return this.val;
case this.Properties.ShowColumnStripes:
return this.ShowColumnStripes;
case this.Properties.ShowFirstColumn:
return this.ShowFirstColumn;
case this.Properties.ShowLastColumn:
return this.ShowLastColumn;
case this.Properties.ShowRowStripes:
return this.ShowRowStripes;
case this.Properties.HeaderRowCount:
return this.HeaderRowCount;
case this.Properties.TotalsRowCount:
return this.TotalsRowCount;
case this.Properties.color:
return this.color;
case this.Properties.tablePart: {
var tablePart = this.tablePart;
if (tablePart) {
var memory = new AscCommon.CMemory();
var wb = window["Asc"]["editor"].wb;
var initSaveManager = new AscCommonExcel.InitSaveManager(wb && wb.model);
var oBinaryTableWriter = new AscCommonExcel.BinaryTableWriter(memory, initSaveManager, false, {});
var ws = wb ? wb.getWorksheetById(nSheetId) : null;
oBinaryTableWriter.WriteTable(tablePart, ws ? ws.model : null);
tablePart = memory.GetBase64Memory();
}
return tablePart;
}
case this.Properties.nCol:
return this.nCol;
case this.Properties.nRow:
return this.nRow;
case this.Properties.formula:
return this.formula;
case this.Properties.totalFunction:
return this.totalFunction;
case this.Properties.viewId:
return this.viewId;
case this.Properties.redoColumnName:
return this.redoColumnName;
}
return null;
};
UndoRedoData_AutoFilter.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.activeCells:
this.activeCells = new Asc.Range(value.c1, value.r1, value.c2, value.r2);
break;
case this.Properties.styleName:
this.styleName = value;
break;
case this.Properties.type:
this.type = value;
break;
case this.Properties.cellId:
this.cellId = value;
break;
case this.Properties.autoFiltersObject:
this.autoFiltersObject = value;
break;
case this.Properties.addFormatTableOptionsObj:
return this.addFormatTableOptionsObj = value;
case this.Properties.moveFrom:
this.moveFrom = value;
break;
case this.Properties.moveTo:
this.moveTo = value;
break;
case this.Properties.bWithoutFilter:
this.bWithoutFilter = value;
break;
case this.Properties.displayName:
this.displayName = value;
break;
case this.Properties.val:
this.val = value;
break;
case this.Properties.ShowColumnStripes:
this.ShowColumnStripes = value;
break;
case this.Properties.ShowFirstColumn:
this.ShowFirstColumn = value;
break;
case this.Properties.ShowLastColumn:
this.ShowLastColumn = value;
break;
case this.Properties.ShowRowStripes:
this.ShowRowStripes = value;
break;
case this.Properties.HeaderRowCount:
this.HeaderRowCount = value;
break;
case this.Properties.TotalsRowCount:
this.TotalsRowCount = value;
break;
case this.Properties.color:
this.color = value;
break;
case this.Properties.tablePart: {
var table;
if (value) {
//TODO длину скорее всего нужно записывать
var dstLen = 0;
dstLen += value.length;
var pointer = g_memory.Alloc(dstLen);
var stream = new AscCommon.FT_Stream2(pointer.data, dstLen);
stream.obj = pointer.obj;
var nCurOffset = 0;
var oBinaryFileReader = new AscCommonExcel.BinaryFileReader();
nCurOffset = oBinaryFileReader.getbase64DecodedData2(value, 0, stream, nCurOffset);
var initOpenManager = new AscCommonExcel.InitOpenManager();
var oBinaryTableReader = new AscCommonExcel.Binary_TableReader(stream, initOpenManager);
oBinaryTableReader.stream = stream;
oBinaryTableReader.oReadResult = {
tableCustomFunc: []
};
table = new AscCommonExcel.TablePart();
var res = oBinaryTableReader.bcr.Read1(dstLen, function (t, l) {
return oBinaryTableReader.ReadTable(t, l, table);
});
}
if (table) {
this.tablePart = table;
}
break;
}
case this.Properties.nCol:
this.nCol = value;
break;
case this.Properties.nRow:
this.nRow = value;
break;
case this.Properties.formula:
this.formula = value;
break;
case this.Properties.totalFunction:
this.totalFunction = value;
break;
case this.Properties.viewId:
this.viewId = value;
break;
case this.Properties.redoColumnName:
this.redoColumnName = value;
break;
}
return null;
};
UndoRedoData_AutoFilter.prototype.applyCollaborative = function (nSheetId, collaborativeEditing) {
let res = false;
let r1old = this.activeCells.r1;
let r2old = this.activeCells.r2;
let c1old = this.activeCells.c1;
let c2old = this.activeCells.c2;
this.activeCells.c1 = collaborativeEditing.getLockMeColumn2(nSheetId, this.activeCells.c1);
this.activeCells.c2 = collaborativeEditing.getLockMeColumn2(nSheetId, this.activeCells.c2);
this.activeCells.r1 = collaborativeEditing.getLockMeRow2(nSheetId, this.activeCells.r1);
this.activeCells.r2 = collaborativeEditing.getLockMeRow2(nSheetId, this.activeCells.r2);
res = this.activeCells.r1 !== r1old || this.activeCells.r2 !== r2old || this.activeCells.c1 !== c1old || this.activeCells.c2 !== c2old;
if (this.autoFiltersObject && this.autoFiltersObject.cellId !== undefined) {
var curCellId = this.autoFiltersObject.cellId.split('af')[0];
var range;
AscCommonExcel.executeInR1C1Mode(false, function () {
range = AscCommonExcel.g_oRangeCache.getAscRange(curCellId).clone();
});
let nRowOld = range.r1;
let nColOld = range.c1;
var nRow = collaborativeEditing.getLockMeRow2(nSheetId, range.r1);
var nCol = collaborativeEditing.getLockMeColumn2(nSheetId, range.c1);
res = res || range.r1 !== nRowOld || range.c1 !== nColOld;
this.autoFiltersObject.cellId = new AscCommon.CellBase(nRow, nCol).getName();
}
return res;
};
//***array-formula***
function UndoRedoData_ArrayFormula(range, formula) {
this.range = range;
this.formula = formula;
}
UndoRedoData_ArrayFormula.prototype.Properties = {
range: 0,
formula: 1
};
UndoRedoData_ArrayFormula.prototype.getType = function () {
return UndoRedoDataTypes.ArrayFormula;
};
UndoRedoData_ArrayFormula.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_ArrayFormula.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.range:
return new UndoRedoData_BBox(this.range);
case this.Properties.formula:
return this.formula;
}
return null;
};
UndoRedoData_ArrayFormula.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.range:
this.range = new Asc.Range(value.c1, value.r1, value.c2, value.r2);
break;
case this.Properties.formula:
this.formula = value;
break;
}
return null;
};
function UndoRedoData_SingleProperty(elem) {
this.elem = elem;
}
UndoRedoData_SingleProperty.prototype.Properties = {
elem: 0
};
UndoRedoData_SingleProperty.prototype.getType = function () {
return UndoRedoDataTypes.SingleProperty;
};
UndoRedoData_SingleProperty.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_SingleProperty.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.elem:
return this.elem;
}
return null;
};
UndoRedoData_SingleProperty.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.elem:
this.elem = value;
break;
}
};
function UndoRedoData_SortState(from, to, bFilter, tableName) {
this.from = from;
this.to = to;
this.bFilter = bFilter;
this.tableName = tableName;
}
UndoRedoData_SortState.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_SortState(this.to, this.from, this.bFilter, this.tableName);
}
UndoRedoData_SortState.prototype.Properties = {
from: 0, to: 1, bFilter: 2, tableName: 3
};
UndoRedoData_SortState.prototype.getType = function () {
return UndoRedoDataTypes.SortStateData;
};
UndoRedoData_SortState.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_SortState.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
case this.Properties.bFilter:
return this.bFilter;
case this.Properties.tableName:
return this.tableName;
}
return null;
};
UndoRedoData_SortState.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
case this.Properties.bFilter:
this.bFilter = value;
break;
case this.Properties.tableName:
this.tableName = value;
break;
}
};
function UndoRedoData_Slicer(name, from, to) {
this.name = name;
this.from = from;
this.to = to;
}
UndoRedoData_Slicer.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_Slicer(this.to, this.from);
}
UndoRedoData_Slicer.prototype.Properties = {
name: 0, from: 1, to: 2
};
UndoRedoData_Slicer.prototype.getType = function () {
return UndoRedoDataTypes.SlicerData;
};
UndoRedoData_Slicer.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_Slicer.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.name:
return this.name;
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
}
return null;
};
UndoRedoData_Slicer.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.name:
this.name = value;
break;
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
}
};
function UndoRedoData_DataValidation(id, from, to) {
this.id = id;
this.from = from;
this.to = to;
}
UndoRedoData_DataValidation.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_DataValidation(this.id, this.to, this.from);
}
UndoRedoData_DataValidation.prototype.Properties = {
id: 0, to: 2
};
UndoRedoData_DataValidation.prototype.getType = function () {
return UndoRedoDataTypes.DataValidation;
};
UndoRedoData_DataValidation.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_DataValidation.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.id:
return this.id;
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
}
return null;
};
UndoRedoData_DataValidation.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
case this.Properties.id:
this.id = value;
break;
}
};
UndoRedoData_DataValidation.prototype.applyCollaborative = function (nSheetId, collaborativeEditing) {
if (this.to) {
for (var i = 0; i < this.to.ranges.length; i++) {
var range = this.to.ranges[i];
range.r1 = collaborativeEditing.getLockMeRow2(nSheetId, range.r1);
range.r2 = collaborativeEditing.getLockMeRow2(nSheetId, range.r2);
range.c1 = collaborativeEditing.getLockMeColumn2(nSheetId, range.c1);
range.c2 = collaborativeEditing.getLockMeColumn2(nSheetId, range.c2);
}
}
};
function UndoRedoData_CF(id, from, to) {
this.id = id;
this.from = from;
this.to = to;
}
UndoRedoData_CF.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_CF(this.id, this.to, this.from);
}
UndoRedoData_CF.prototype.Properties = {
id: 0, to: 2
};
UndoRedoData_CF.prototype.getType = function () {
return UndoRedoDataTypes.CFData;
};
UndoRedoData_CF.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_CF.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.id:
return this.id;
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
}
return null;
};
UndoRedoData_CF.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.id:
this.id = value;
break;
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
}
};
function UndoRedoData_ProtectedRange(id, from, to) {
this.id = id;
this.from = from;
this.to = to;
}
UndoRedoData_ProtectedRange.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_ProtectedRange(this.id, this.to, this.from);
}
UndoRedoData_ProtectedRange.prototype.Properties = {
id: 0, to: 2
};
UndoRedoData_ProtectedRange.prototype.getType = function () {
return UndoRedoDataTypes.ProtectedRangeData;
};
UndoRedoData_ProtectedRange.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_ProtectedRange.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.id:
return this.id;
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
}
return null;
};
UndoRedoData_ProtectedRange.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.id:
this.id = value;
break;
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
}
};
function UndoRedoData_NamedSheetView(sheetView, from, to) {
this.sheetView = sheetView;
this.from = from;
this.to = to;
}
UndoRedoData_NamedSheetView.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_NamedSheetView(this.sheetView, this.to, this.from);
}
UndoRedoData_NamedSheetView.prototype.Properties = {
sheetView: 0, from: 1, to: 2
};
UndoRedoData_NamedSheetView.prototype.getType = function () {
return window['AscCommonExcel'].UndoRedoDataTypes.NamedSheetViewChange;
};
UndoRedoData_NamedSheetView.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_NamedSheetView.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.sheetView:
return this.sheetView;
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
}
return null;
};
UndoRedoData_NamedSheetView.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.sheetView:
this.sheetView = value;
break;
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
}
};
function UndoRedoData_NamedSheetViewRedo(sheetView, from, to) {
this.sheetView = sheetView;
this.from = from;
this.to = to;
}
UndoRedoData_NamedSheetViewRedo.prototype = Object.create(UndoRedoData_NamedSheetView.prototype);
UndoRedoData_NamedSheetViewRedo.prototype.Properties = {
sheetView: 0, to: 2
};
function UndoRedoData_UserProtectedRange(id, from, to) {
this.id = id;
this.from = from;
this.to = to;
}
UndoRedoData_UserProtectedRange.prototype.CreateReverseChangeSpreadsheet = function () {
return new UndoRedoData_UserProtectedRange(this.id, this.to, this.from);
}
UndoRedoData_UserProtectedRange.prototype.Properties = {
id: 0, from: 1, to: 2
};
UndoRedoData_UserProtectedRange.prototype.getType = function () {
return UndoRedoDataTypes.UserProtectedRangeChange;
};
UndoRedoData_UserProtectedRange.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_UserProtectedRange.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.id:
return this.id;
case this.Properties.from:
return this.from;
case this.Properties.to:
return this.to;
}
return null;
};
UndoRedoData_UserProtectedRange.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.id:
this.id = value;
break;
case this.Properties.from:
this.from = value;
break;
case this.Properties.to:
this.to = value;
break;
}
};
function UndoRedoData_RowColBreaks(id, min, max, man, pt, byCol) {
this.id = id;
this.min = min;
this.max = max;
this.man = man;
this.pt = pt;
this.byCol = byCol;
}
UndoRedoData_RowColBreaks.prototype.Properties = {
id: 0, min: 1, max: 2, man: 3, pt: 4, byCol: 5
};
UndoRedoData_RowColBreaks.prototype.getType = function () {
return UndoRedoDataTypes.RowColBreaks;
};
UndoRedoData_RowColBreaks.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_RowColBreaks.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.id:
return this.id;
case this.Properties.min:
return this.min;
case this.Properties.max:
return this.max;
case this.Properties.man:
return this.man;
case this.Properties.pt:
return this.pt;
case this.Properties.byCol:
return this.byCol;
}
return null;
};
UndoRedoData_RowColBreaks.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.id:
this.id = value;
break;
case this.Properties.min:
this.min = value;
break;
case this.Properties.max:
this.max = value;
break;
case this.Properties.man:
this.man = value;
break;
case this.Properties.pt:
this.pt = value;
break;
case this.Properties.byCol:
this.byCol = value;
break;
}
};
function UndoRedoData_LegacyDrawingHFDrawing(id, graphicId) {
this.id = id;
this.graphicId = graphicId;
}
UndoRedoData_LegacyDrawingHFDrawing.prototype.Properties = {
id: 0, graphicId: 1
};
UndoRedoData_LegacyDrawingHFDrawing.prototype.getType = function () {
return UndoRedoDataTypes.LegacyDrawingHFDrawing;
};
UndoRedoData_LegacyDrawingHFDrawing.prototype.getProperties = function () {
return this.Properties;
};
UndoRedoData_LegacyDrawingHFDrawing.prototype.getProperty = function (nType) {
switch (nType) {
case this.Properties.id:
return this.id;
case this.Properties.graphicId:
return this.graphicId;
}
return null;
};
UndoRedoData_LegacyDrawingHFDrawing.prototype.setProperty = function (nType, value) {
switch (nType) {
case this.Properties.id:
this.id = value;
break;
case this.Properties.graphicId:
this.graphicId = value;
break;
}
};
//для применения изменений
var UndoRedoClassTypes = new function () {
this.aTypes = [];
this.offset = 0;
this.Add = function (fCreate) {
var nRes = this.aTypes.length;
this.aTypes.push(fCreate);
return nRes + this.offset;
};
this.Create = function (nType) {
const nTypeIndex = nType - this.offset;
if (0 <= nTypeIndex && nTypeIndex < this.aTypes.length) {
return this.aTypes[nTypeIndex]();
}
return null;
};
this.SetOffset = function (offset) {
this.offset = offset || 0;
};
this.Clean = function () {
this.aTypes = [];
};
};
function UndoRedoClassBase() {
}
UndoRedoClassBase.prototype.Get_Id = function () {
//for CCollaborativeHistory.prototype.UndoOwnPoint
};
UndoRedoClassBase.prototype.IsNeedRecalculate = function () {
//for CHistory.prototype.Add
return false;
};
UndoRedoClassBase.prototype.IsNeedRecalculateLineNumbers = function () {
//for CHistory.prototype.Add
return false;
};
UndoRedoClassBase.prototype.GetClass = function () {
//for CChangesBaseContentChange.prototype.IsRelated
return undefined;
};
function UndoRedoWorkbook(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoWorkbook;
});
}
UndoRedoWorkbook.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoWorkbook.prototype.getClassType = function () {
return this.nType;
};
UndoRedoWorkbook.prototype.IsContentChangeSpreadsheet = function (Type) {
return AscCH.historyitem_Workbook_SheetAdd === Type || AscCH.historyitem_Workbook_SheetRemove === Type;
};
UndoRedoWorkbook.prototype.IsRelatedSpreadsheet = function (oChanges, Type) {
return this === oChanges && oChanges.IsContentChangeSpreadsheet(Type);
};
UndoRedoWorkbook.prototype.ConvertToSimpleActionsSpreadsheet = function(Type, Data)
{
let isAdd = AscCH.historyitem_Workbook_SheetAdd === Type;
let index = isAdd ? Data.insertBefore : Data.index;
return [{
Item : this,
Pos : index,
Add : isAdd
}];
};
UndoRedoWorkbook.prototype.ConvertToSimpleChangesSpreadsheet = function(SerializableItem)
{
const oItem = new UndoRedoItemSerializable(SerializableItem.oClass, SerializableItem.nActionType, SerializableItem.nSheetId, SerializableItem.oRange, SerializableItem.oData, SerializableItem.LocalChange);
return [oItem];
};
UndoRedoWorkbook.prototype.ConvertFromSimpleActionsSpreadsheet = function(arrActions, Data)
{
let action = arrActions[0];
if (action) {
if (action.Add) {
Data.insertBefore = action.Pos;
} else {
Data.index = action.Pos;
}
}
};
UndoRedoWorkbook.prototype.CreateReverseChangeSpreadsheet = function (ToClass, Type, nSheetId, oRange, Data, LocalChange) {
if (AscCH.historyitem_Workbook_SheetAdd === Type) {
Type = AscCH.historyitem_Workbook_SheetRemove;
Data = new AscCommonExcel.UndoRedoData_SheetRemove(Data.insertBefore, Data.sheetid, Data.opt_sheet);
} else if (AscCH.historyitem_Workbook_SheetRemove === Type) {
Type = AscCH.historyitem_Workbook_SheetAdd;
let ws = AscCommon.g_oTableId.Get_ById(Data.sheetId);
if (ws) {
Data = new UndoRedoData_SheetAdd(Data.index, ws.getName(), null, Data.sheetId, null, null, Data.sheetId);
} else {
return;
}
} else {
return;
}
return new UndoRedoItemSerializable(ToClass, Type, nSheetId, oRange, Data, LocalChange);
};
UndoRedoWorkbook.prototype.CommuteRelatedRemoveSheet = function (sheetId, oActionOther) {
return !(AscCH.historyitem_Workbook_SheetRemove === oActionOther.nActionType && oActionOther.oData && sheetId === oActionOther.oData.sheetId);
}
UndoRedoWorkbook.prototype.CommuteRelated = function (oActionToUndo, oActionOther) {
return true;
}
UndoRedoWorkbook.prototype.Undo = function (Type, Data, nSheetId, opt_wb) {
this.UndoRedo(Type, Data, nSheetId, true, opt_wb);
};
UndoRedoWorkbook.prototype.Redo = function (Type, Data, nSheetId, opt_wb) {
this.UndoRedo(Type, Data, nSheetId, false, opt_wb);
};
UndoRedoWorkbook.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo, opt_wb) {
var wb = opt_wb ? opt_wb : this.wb;
var bNeedTrigger = true;
if (AscCH.historyitem_Workbook_SheetAdd == Type) {
if (null == Data.insertBefore) {
Data.insertBefore = 0;
}
if (bUndo) {
var outputParams = {sheet: null};
wb.removeWorksheet(Data.insertBefore, outputParams);
//сохраняем тот sheet который удалили, иначе может возникнуть ошибка, если какой-то обьект запоминал ссылку на sheet(например):
//Добавляем лист -> Добавляем ссылку -> undo -> undo -> redo -> redo
Data.sheet = outputParams.sheet;
} else {
if (Data.opt_sheet) {
/*var api = window["Asc"]["editor"];
api.wb.pasteSheet(Data.opt_sheet, 0, Data.name);
api.asc_EndMoveSheet2(Data.opt_sheet, 0, Data.name);*/
var tempWorkbook = new AscCommonExcel.Workbook(undefined, undefined, false);
tempWorkbook.DrawingDocument = Asc.editor.wbModel.DrawingDocument;
tempWorkbook.setCommonIndexObjectsFrom(wb);
AscCommonExcel.g_clipboardExcel.pasteProcessor._readExcelBinary(Data.opt_sheet.split('xslData;')[1], tempWorkbook, true);
/*var api = window["Asc"]["editor"];
//api.wb.pasteSheet(Data.opt_sheet, 0, Data.name);
api.asc_EndMoveSheet(Data.insertBefore, [Data.name], [Data.opt_sheet]);*/
wb.copyWorksheet(0, Data.insertBefore, Data.name, Data.sheetid, true, Data.tableNames, tempWorkbook.aWorksheets[0]);
//var renameParams = t.model.copyWorksheet(0, insertBefore, name, undefined, undefined, undefined, pastedWs);
//wb.copyWorksheet(0, Data.insertBefore, Data.name, Data.sheetid, true, Data.tableNames, tempWorkbook.aWorksheets[0]);
} else if (null != Data.sheet) {
//сюда заходим только если до этого было сделано Undo
wb.insertWorksheet(Data.insertBefore, Data.sheet);
} else if (null != Data.opt_sheetidToAdd) {
let ws = AscCommon.g_oTableId.Get_ById(Data.opt_sheetidToAdd);
if (ws) {
wb.insertWorksheet(Data.insertBefore, ws);
}
} else {
if (null == Data.sheetidfrom) {
wb.createWorksheet(Data.insertBefore, Data.name, Data.sheetid);
} else {
var oCurWorksheet = wb.getWorksheetById(Data.sheetidfrom);
var nIndex = oCurWorksheet.getIndex();
wb.copyWorksheet(nIndex, Data.insertBefore, Data.name, Data.sheetid, true, Data.tableNames);
}
}
}
wb.handlers.trigger("updateWorksheetByModel");
wb.handlers.trigger("changeCellWatches");
} else if (AscCH.historyitem_Workbook_SheetRemove == Type) {
if (bUndo) {
wb.insertWorksheet(Data.index, Data.sheet);
} else {
var nIndex = Data.index;
if (null == nIndex) {
var oCurWorksheet = wb.getWorksheetById(Data.sheetId);
if (oCurWorksheet) {
nIndex = oCurWorksheet.getIndex();
}
}
if (null != nIndex) {
wb.removeWorksheet(nIndex);
}
}
wb.handlers.trigger("updateWorksheetByModel");
wb.handlers.trigger("changeCellWatches");
} else if (AscCH.historyitem_Workbook_DefinedNamesChange === Type ||
AscCH.historyitem_Workbook_DefinedNamesChangeUndo === Type) {
var oldName, newName;
if (bUndo) {
oldName = Data.to;
newName = Data.from;
} else {
if (wb.bCollaborativeChanges) {
wb.handlers.trigger("asc_onLockDefNameManager", Asc.c_oAscDefinedNameReason.OK);
}
oldName = Data.from;
newName = Data.to;
}
if (bUndo || AscCH.historyitem_Workbook_DefinedNamesChangeUndo !== Type) {
if (null == newName) {
wb.delDefinesNamesUndoRedo(oldName);
wb.handlers.trigger("asc_onDelDefName")
} else {
wb.editDefinesNamesUndoRedo(oldName, newName, true);
wb.handlers.trigger("asc_onEditDefName", oldName, newName);
}
// clear traces
wb.oApi.asc_RemoveTraceArrows(Asc.c_oAscRemoveArrowsType.all);
}
} else if (AscCH.historyitem_Workbook_Calculate === Type) {
if (!bUndo && wb.bCollaborativeChanges) {
wb.calculate(Data.elem, nSheetId);
}
} else if (bUndo && AscCH.historyitem_Workbook_PivotWorksheetSource === Type) {
var wrapper = bUndo ? Data.from : Data.to;
var worksheetSource = AscCommon.g_oTableId.Get_ById(wrapper.Id);
if (worksheetSource) {
wrapper.readData(worksheetSource);
worksheetSource.fromWorksheetSource(worksheetSource, true);
}
} else if (AscCH.historyitem_Workbook_Date1904 === Type) {
wb.setDate1904(bUndo ? Data.from : Data.to);
AscCommon.oNumFormatCache.cleanCache();
} else if (AscCH.historyitem_Workbook_ChangeExternalReference === Type) {
var from = bUndo ? Data.from : Data.to;
var to = bUndo ? Data.to : Data.from;
var externalReferenceIndex;
if (from && !to) {//удаление
from.initExternalReference();
/* the first call is a search by referenceData, if we get null, we make a second call to search by Id below and then add or re-assign the link */
externalReferenceIndex = wb.getExternalReferenceByReferenceData(from.referenceData, true);
if (!externalReferenceIndex) {
externalReferenceIndex = wb.getExternalLinkIndexById(from._id);
}
if (externalReferenceIndex !== null) {
wb.externalReferences[externalReferenceIndex - 1] = from;
} else {
wb.externalReferences.push(from);
}
} else if (!from && to) { //добавление
/* the first call is a search by referenceData, if we get null, we make a second call to search by Id below and then delete the link */
externalReferenceIndex = wb.getExternalReferenceByReferenceData(to.referenceData, true);
if (!externalReferenceIndex) {
externalReferenceIndex = wb.getExternalLinkIndexById(to._id);
}
if (externalReferenceIndex !== null) {
wb._removeExternalReference(externalReferenceIndex - 1);
}
} else if (from && to) { //изменение
//TODO нужно сохранить ссылки на текущий лист
/* the first call is a search by referenceData, if we get null, we make a second call to search by Id below and then change the link */
externalReferenceIndex = wb.getExternalReferenceByReferenceData(to.referenceData, true);
if (!externalReferenceIndex) {
externalReferenceIndex = wb.getExternalLinkIndexById(to._id);
}
if (externalReferenceIndex !== null) {
for (let ws in to.worksheets) {
let externalSheet = to.worksheets[ws];
if (externalSheet) {
let externalSheetId = externalSheet.getId();
wb.dependencyFormulas.forEachSheetListeners(externalSheetId, function (parsed) {
let cell = parsed && parsed.parent;
if (cell && cell && cell.nCol != null && cell.nRow != null) {
// endListeningRange for previous external source
let bbox = new Asc.Range(cell.nCol, cell.nRow, cell.nCol, cell.nRow);
parsed._buildDependenciesRef(externalSheetId, bbox, null, null);
}
});
}
}
from.worksheets = wb.externalReferences[externalReferenceIndex - 1].worksheets;
from.initExternalReference();
from.putToChangedCells();
wb.externalReferences[externalReferenceIndex - 1] = from;
}
}
wb.handlers.trigger("asc_onUpdateExternalReferenceList");
} else if (AscCH.historyitem_Workbook_TimelineCacheDelete === Type) {
if (bUndo) {
wb.timelineCaches.push(Data.from);
} else {
wb.onTimelineCacheDelete(Data.from.name);
}
} else if (AscCH.historyitem_Workbook_CalcPr_iterate === Type) {
wb.calcPr.setIterate(bUndo ? Data.from : Data.to);
AscCommonExcel.g_cCalcRecursion.initCalcProperties(wb.calcPr);
} else if (AscCH.historyitem_Workbook_CalcPr_iterateCount === Type) {
wb.calcPr.setIterateCount(bUndo ? Data.from : Data.to);
AscCommonExcel.g_cCalcRecursion.initCalcProperties(wb.calcPr);
} else if (AscCH.historyitem_Workbook_CalcPr_iterateDelta === Type) {
wb.calcPr.setIterateDelta(bUndo ? Data.from : Data.to);
AscCommonExcel.g_cCalcRecursion.initCalcProperties(wb.calcPr);
} else if(AscCH.historyitem_Workbook_UpdateLinks === Type) {
wb.setUpdateLinks(bUndo ? Data.from : Data.to, null, null, !wb.oApi.isDocumentLoadComplete && wb.bCollaborativeChanges);
} else if (AscCH.historyitem_Workbook_ShowVerticalScroll === Type) {
wb.setShowVerticalScroll(bUndo ? Data.from : Data.to);
} else if (AscCH.historyitem_Workbook_ShowHorizontalScroll === Type) {
wb.setShowHorizontalScroll(bUndo ? Data.from : Data.to);
} else if (AscCH.historyitem_Workbook_SetCustomFunctions === Type) {
wb.oApi["pluginMethod_SetCustomFunctions"] && wb.oApi["pluginMethod_SetCustomFunctions"](bUndo ? Data.from : Data.to);
}
};
UndoRedoWorkbook.prototype.forwardTransformationIsAffect = function (Type) {
//todo parserFormula.prototype.processNotify
return AscCH.historyitem_Workbook_SheetAdd === Type || AscCH.historyitem_Workbook_SheetRemove === Type ||
AscCH.historyitem_Workbook_DefinedNamesChange === Type;
};
UndoRedoWorkbook.prototype.forwardTransformationGet = function (Type, Data, nSheetId) {
if (AscCH.historyitem_Workbook_DefinedNamesChange === Type) {
if (Data.newName && Data.newName.Ref) {
return {formula: Data.newName.Ref};
} else if (Data.to && Data.to.ref) {
return {formula: Data.to.ref};
}
} else if (AscCH.historyitem_Workbook_SheetAdd === Type) {
return {name: Data.name};
}
return null;
};
UndoRedoWorkbook.prototype.forwardTransformationSet = function (Type, Data, nSheetId, getRes) {
if (AscCH.historyitem_Workbook_SheetAdd === Type) {
Data.name = getRes.name;
} else if (AscCH.historyitem_Cell_ChangeValue === Type) {
if (Data && Data.newName) {
Data.newName.Ref = getRes.formula;
}
} else if (AscCH.historyitem_Workbook_DefinedNamesChange === Type) {
if (Data.to && Data.to.ref) {
Data.to.ref = getRes.formula;
}
}
return null;
};
function UndoRedoCell(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoCell;
});
}
UndoRedoCell.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoCell.prototype.getClassType = function () {
return this.nType;
};
UndoRedoCell.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoCell.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoCell.prototype.CreateReverseChangeSpreadsheet = function (ToClass, nActionType, nSheetId, oRange, oData, LocalChange) {
oData = oData.CreateReverseChangeSpreadsheet();
return new UndoRedoItemSerializable(ToClass, nActionType, nSheetId, oRange, oData, LocalChange, null)
};
UndoRedoCell.prototype.CommuteRelated = function (oActionToUndo, oActionOther) {
if (AscCH.historyitem_Unknown === oActionToUndo.nActionType) {
//CChangesPointChange
oActionToUndo.oData.CommuteRelated(oActionToUndo, oActionOther);
return true;
}
return AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedCell(oActionToUndo.oData, oActionOther);
};
UndoRedoCell.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
let ws = this.wb.getWorksheetById(nSheetId), t = this;
if (null == ws) {
return;
}
var nRow = Data.nRow;
var nCol = Data.nCol;
if (this.wb.bCollaborativeChanges) {
var collaborativeEditing = this.wb.oApi.collaborativeEditing;
nRow = collaborativeEditing.getLockOtherRow2(nSheetId, nRow);
nCol = collaborativeEditing.getLockOtherColumn2(nSheetId, nCol);
var oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(nCol, nRow, nCol, nRow);
this.wb.aCollaborativeChangeElements.push(oLockInfo);
}
ws._getCell(nRow, nCol, function (cell) {
var Val = bUndo ? Data.oOldVal : Data.oNewVal;
if (AscCH.historyitem_Cell_Fontname == Type) {
cell.setFontname(Val);
} else if (AscCH.historyitem_Cell_Fontsize == Type) {
cell.setFontsize(Val);
} else if (AscCH.historyitem_Cell_Fontcolor == Type) {
cell.setFontcolor(Val);
} else if (AscCH.historyitem_Cell_Bold == Type) {
cell.setBold(Val);
} else if (AscCH.historyitem_Cell_Italic == Type) {
cell.setItalic(Val);
} else if (AscCH.historyitem_Cell_Underline == Type) {
cell.setUnderline(Val);
} else if (AscCH.historyitem_Cell_Strikeout == Type) {
cell.setStrikeout(Val);
} else if (AscCH.historyitem_Cell_FontAlign == Type) {
cell.setFontAlign(Val);
} else if (AscCH.historyitem_Cell_AlignVertical == Type) {
cell.setAlignVertical(Val);
} else if (AscCH.historyitem_Cell_AlignHorizontal == Type) {
cell.setAlignHorizontal(Val);
} else if (AscCH.historyitem_Cell_ReadingOrder == Type) {
cell.setReadingOrder(Val);
} else if (AscCH.historyitem_Cell_Fill == Type) {
cell.setFill(Val);
} else if (AscCH.historyitem_Cell_Border == Type) {
if (null != Val) {
cell.setBorder(Val.clone());
} else {
cell.setBorder(null);
}
} else if (AscCH.historyitem_Cell_ShrinkToFit == Type) {
cell.setShrinkToFit(Val);
} else if (AscCH.historyitem_Cell_Wrap == Type) {
cell.setWrap(Val);
} else if (AscCH.historyitem_Cell_Num == Type) {
cell.setNum(Val);
} else if (AscCH.historyitem_Cell_Angle == Type) {
cell.setAngle(Val);
} else if (AscCH.historyitem_Cell_Indent == Type) {
cell.setIndent(Val);
} else if (AscCH.historyitem_Cell_ChangeArrayValueFormat == Type) {
var multiText = [];
for (var i = 0, length = Val.length; i < length; ++i) {
multiText.push(Val[i].clone());
}
cell.setValueMultiTextInternal(multiText);
} else if (AscCH.historyitem_Cell_ChangeValue === Type || AscCH.historyitem_Cell_ChangeValueUndo === Type) {
if (bUndo || AscCH.historyitem_Cell_ChangeValueUndo !== Type) {
cell.setValueData(Val);
}
} else if (AscCH.historyitem_Cell_SetStyle == Type) {
if (null != Val) {
cell.setStyle(Val);
} else {
cell.setStyle(null);
}
} else if (AscCH.historyitem_Cell_SetFont == Type) {
cell.setFont(Val);
} else if (AscCH.historyitem_Cell_SetQuotePrefix == Type) {
cell.setQuotePrefix(Val);
} else if (AscCH.historyitem_Cell_SetPivotButton == Type) {
cell.setPivotButton(Val);
} else if (AscCH.historyitem_Cell_Style == Type) {
cell.setCellStyle(Val);
} else if (AscCH.historyitem_Cell_RemoveSharedFormula == Type) {
if (null !== Val && bUndo) {
var parsed = ws.workbook.workbookFormulas.get(Val);
if (parsed) {
cell.setFormulaParsed(parsed);
}
}
} else if (AscCH.historyitem_Cell_SetApplyProtection == Type) {
cell.setApplyProtection(Val);
} else if (AscCH.historyitem_Cell_SetLocked == Type) {
cell.setLocked(Val);
} else if (AscCH.historyitem_Cell_SetHidden == Type) {
cell.setHiddenFormulas(Val);
}
});
};
UndoRedoCell.prototype.forwardTransformationGet = function (Type, Data, nSheetId) {
if (AscCH.historyitem_Cell_ChangeValue === Type && Data.oNewVal && Data.oNewVal.formula) {
return {formula: Data.oNewVal.formula};
}
return null;
};
UndoRedoCell.prototype.forwardTransformationSet = function (Type, Data, nSheetId, getRes) {
if (AscCH.historyitem_Cell_ChangeValue === Type) {
if (Data && Data.oNewVal) {
Data.oNewVal.formula = getRes.formula;
}
}
return null;
};
function UndoRedoWoorksheet(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoWorksheet;
});
this.tmpCell = new AscCommon.CellBase(0, 0);
this.tmpRange = new Asc.Range(0,0,0,0);
}
UndoRedoWoorksheet.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoWoorksheet.prototype.getClassType = function () {
return this.nType;
};
UndoRedoWoorksheet.prototype.CreateReverseChangeSpreadsheet = function (ToClass, Type, nSheetId, oRange, Data, LocalChange) {
if (AscCH.historyitem_Worksheet_RemoveCell === Type || AscCH.historyitem_Worksheet_ColProp === Type ||
AscCH.historyitem_Worksheet_RowProp === Type) {
Data = Data.CreateReverseChangeSpreadsheet();
} else if (AscCH.historyitem_Worksheet_RowHide === Type) {
Data = Data.CreateReverseChangeSpreadsheet();
} else if (AscCH.historyitem_Worksheet_AddRows === Type) {
Type = AscCH.historyitem_Worksheet_RemoveRows;
} else if (AscCH.historyitem_Worksheet_RemoveRows === Type) {
Type = AscCH.historyitem_Worksheet_AddRows;
} else if (AscCH.historyitem_Worksheet_AddCols === Type) {
Type = AscCH.historyitem_Worksheet_RemoveCols;
} else if (AscCH.historyitem_Worksheet_RemoveCols === Type) {
Type = AscCH.historyitem_Worksheet_AddCols;
} else if (AscCH.historyitem_Worksheet_ShiftCellsLeft === Type) {
Type = AscCH.historyitem_Worksheet_ShiftCellsRight;
} else if (AscCH.historyitem_Worksheet_ShiftCellsRight === Type) {
Type = AscCH.historyitem_Worksheet_ShiftCellsLeft;
} else if (AscCH.historyitem_Worksheet_ShiftCellsTop === Type) {
Type = AscCH.historyitem_Worksheet_ShiftCellsBottom;
} else if (AscCH.historyitem_Worksheet_ShiftCellsBottom === Type) {
Type = AscCH.historyitem_Worksheet_ShiftCellsTop;
} else if (AscCH.historyitem_Worksheet_Sort === Type) {
;
} else if (AscCH.historyitem_Worksheet_MoveRange === Type || AscCH.historyitem_Worksheet_Rename === Type ||
AscCH.historyitem_Worksheet_Hide === Type || AscCH.historyitem_Worksheet_SetDisplayGridlines === Type ||
AscCH.historyitem_Worksheet_SetDisplayHeadings === Type || AscCH.historyitem_Worksheet_ChangeMerge === Type ||
AscCH.historyitem_Worksheet_ChangeHyperlink === Type || AscCH.historyitem_Worksheet_ChangeFrozenCell === Type ||
AscCH.historyitem_Worksheet_SetTabColor === Type || AscCH.historyitem_Worksheet_SetSummaryRight === Type ||
AscCH.historyitem_Worksheet_SetSummaryBelow === Type || AscCH.historyitem_Worksheet_GroupRow === Type ||
AscCH.historyitem_Worksheet_GroupCol === Type || AscCH.historyitem_Worksheet_CollapsedRow === Type ||
AscCH.historyitem_Worksheet_CollapsedCol === Type || AscCH.historyitem_Worksheet_SetFitToPage === Type ||
AscCH.historyitem_Worksheet_SetTopLeftCell === Type) {
Data = Data.CreateReverseChangeSpreadsheet();
} else {
return;
}
return new UndoRedoItemSerializable(ToClass, Type, nSheetId, oRange, Data, LocalChange);
};
UndoRedoWoorksheet.prototype.CommuteRelated = function (oActionToUndo, oActionOther) {
let isAddRowUndo = AscCH.historyitem_Worksheet_AddRows === oActionToUndo.nActionType;
let isAddColUndo = AscCH.historyitem_Worksheet_AddCols === oActionToUndo.nActionType;
let isRemoveRowUndo = AscCH.historyitem_Worksheet_RemoveRows === oActionToUndo.nActionType;
let isRemoveColUndo = AscCH.historyitem_Worksheet_RemoveCols === oActionToUndo.nActionType;
let isAddRowOther = AscCommonExcel.g_oUndoRedoWorksheet === oActionOther.oClass && AscCH.historyitem_Worksheet_AddRows === oActionOther.nActionType;
let isAddColOther = AscCommonExcel.g_oUndoRedoWorksheet === oActionOther.oClass && AscCH.historyitem_Worksheet_AddCols === oActionOther.nActionType;
let isRemoveRowOther = AscCommonExcel.g_oUndoRedoWorksheet === oActionOther.oClass && AscCH.historyitem_Worksheet_RemoveRows === oActionOther.nActionType;
let isRemoveColOther = AscCommonExcel.g_oUndoRedoWorksheet === oActionOther.oClass && AscCH.historyitem_Worksheet_RemoveCols === oActionOther.nActionType;
let isAddUndo = isAddRowUndo || isAddColUndo;
let isAddOther = isAddRowOther || isAddColOther;
let isRemoveUndo = isRemoveRowUndo || isRemoveColUndo;
let isRemoveOther = isRemoveRowOther || isRemoveColOther;
let res = true;
if ((isAddRowUndo || isRemoveRowUndo) && (isAddRowOther || isRemoveRowOther) ||
(isAddColUndo || isRemoveColUndo) && (isAddColOther || isRemoveColOther)) {
if(isAddUndo) {
if(isAddOther) {
let heightUndo = oActionOther.oData.to - oActionOther.oData.from + 1;
let heightOther = oActionOther.oData.to - oActionOther.oData.from + 1;
if (oActionToUndo.oData.from >= oActionOther.oData.from) {
oActionToUndo.oData.from += heightOther;
oActionToUndo.oData.to += heightOther;
} else if (oActionToUndo.oData.from < oActionOther.oData.from && oActionOther.oData.from <= oActionToUndo.oData.to) {
oActionToUndo.oData.to += heightOther;
} else {
oActionOther.oData.from -= heightUndo;
oActionOther.oData.to -= heightUndo;
}
} else if(isRemoveOther){
//todo
let heightUndo = oActionOther.oData.to - oActionOther.oData.from + 1;
let heightOther = oActionOther.oData.to - oActionOther.oData.from + 1;
if (oActionToUndo.oData.from > oActionOther.oData.to) {
oActionToUndo.oData.from -= heightOther;
oActionToUndo.oData.to -= heightOther;
} else if (oActionToUndo.oData.to < oActionOther.oData.from) {
oActionOther.oData.from += heightUndo;
oActionOther.oData.to += heightUndo;
} else {
return false;
}
}
} else if(isRemoveUndo){
if(isAddOther) {
//todo
let heightUndo = oActionOther.oData.to - oActionOther.oData.from + 1;
let heightOther = oActionOther.oData.to - oActionOther.oData.from + 1;
if (oActionToUndo.oData.from >= oActionOther.oData.from) {
oActionToUndo.oData.from += heightOther;
oActionToUndo.oData.to += heightOther;
} else if (oActionToUndo.oData.from < oActionOther.oData.from && oActionOther.oData.from <= oActionToUndo.oData.to) {
oActionToUndo.oData.to += heightOther;
} else {
oActionOther.oData.from -= heightUndo;
oActionOther.oData.to -= heightUndo;
}
} else if(isRemoveOther){
let heightUndo = oActionOther.oData.to - oActionOther.oData.from + 1;
let heightOther = oActionOther.oData.to - oActionOther.oData.from + 1;
if (oActionToUndo.oData.from > oActionOther.oData.to) {
oActionToUndo.oData.from -= heightOther;
oActionToUndo.oData.to -= heightOther;
} else if (oActionToUndo.oData.to < oActionOther.oData.from) {
oActionOther.oData.from += heightUndo;
oActionOther.oData.to += heightUndo;
} else {
return false;
}
}
}
}
if (AscCH.historyitem_Worksheet_RemoveCell === oActionToUndo.nActionType) {
res = AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedCell(oActionToUndo.oData, oActionOther);
} else if (AscCH.historyitem_Worksheet_ColProp === oActionToUndo.nActionType ||
AscCH.historyitem_Worksheet_GroupCol === oActionToUndo.nActionType ||
AscCH.historyitem_Worksheet_CollapsedCol === oActionToUndo.nActionType) {
res = AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedRowCol(oActionToUndo.oData, false, oActionOther);
} else if (AscCH.historyitem_Worksheet_RowProp === oActionToUndo.nActionType ||
AscCH.historyitem_Worksheet_GroupRow === oActionToUndo.nActionType ||
AscCH.historyitem_Worksheet_CollapsedRow === oActionToUndo.nActionType) {
res = AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedRowCol(oActionToUndo.oData, true, oActionOther);
} else if (AscCH.historyitem_Worksheet_RowHide === oActionToUndo.nActionType) {
res = AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedRowColFromTo(oActionToUndo.oData, true, oActionOther);
} else if (AscCH.historyitem_Worksheet_Sort === oActionToUndo.nActionType) {
res = AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedRange(oActionToUndo.oData.bbox, oActionOther);
} else if (AscCH.historyitem_Worksheet_MoveRange === oActionToUndo.nActionType ||
AscCH.historyitem_Worksheet_ChangeMerge === oActionToUndo.nActionType ||
AscCH.historyitem_Worksheet_ChangeHyperlink === oActionToUndo.nActionType ||
AscCH.historyitem_Worksheet_ChangeFrozenCell === oActionToUndo.nActionType ||
AscCH.historyitem_Worksheet_SetTopLeftCell === oActionToUndo.nActionType) {
res = AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedRange(oActionToUndo.oData.from, oActionOther);
res = res && AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedRange(oActionToUndo.oData.to, oActionOther);
}
return res;
};
UndoRedoWoorksheet.prototype.Undo = function (Type, Data, nSheetId, opt_wb) {
this.UndoRedo(Type, Data, nSheetId, true, opt_wb);
};
UndoRedoWoorksheet.prototype.Redo = function (Type, Data, nSheetId, opt_wb) {
this.UndoRedo(Type, Data, nSheetId, false, opt_wb);
};
UndoRedoWoorksheet.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo, opt_wb) {
var wb = opt_wb ? opt_wb : this.wb;
var worksheetView, nRow, nCol, oLockInfo, index, from, to, range, r1, c1, r2, c2, temp, i, length, data;
var bInsert, operType; // ToDo избавиться от этого
var ws = wb.getWorksheetById(nSheetId);
if (null == ws) {
return;
}
var collaborativeEditing = wb.oApi.collaborativeEditing;
var changeFreezePane;
if (AscCH.historyitem_Worksheet_RemoveCell === Type) {
nRow = Data.nRow;
nCol = Data.nCol;
if (wb.bCollaborativeChanges) {
nRow = collaborativeEditing.getLockOtherRow2(nSheetId, nRow);
nCol = collaborativeEditing.getLockOtherColumn2(nSheetId, nCol);
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(nCol, nRow, nCol, nRow);
wb.aCollaborativeChangeElements.push(oLockInfo);
}
let oValue, oStyle;
if (bUndo) {
oValue = Data.oOldVal.value;
oStyle = Data.oOldVal.style;
ws._getCell(nRow, nCol, function (cell) {
cell.setValueData(oValue);
if (null != oStyle) {
cell.setStyle(oStyle);
} else {
cell.setStyle(null);
}
});
} else {
if (Data.oNewVal) {
oValue = Data.oNewVal.value;
oStyle = Data.oNewVal.style;
ws._getCell(nRow, nCol, function (cell) {
cell.setValueData(oValue);
if (null != oStyle) {
cell.setStyle(oStyle);
} else {
cell.setStyle(null);
}
});
} else {
ws._removeCell(nRow, nCol);
}
}
} else if (AscCH.historyitem_Worksheet_ColProp === Type) {
index = Data.index;
if (wb.bCollaborativeChanges) {
if (AscCommonExcel.g_nAllColIndex === index) {
range = new Asc.Range(0, 0, gc_nMaxCol0, gc_nMaxRow0);
} else {
index = collaborativeEditing.getLockOtherColumn2(nSheetId, index);
range = new Asc.Range(index, 0, index, gc_nMaxRow0);
}
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = range;
wb.aCollaborativeChangeElements.push(oLockInfo);
}
var col = ws._getCol(index);
col.setWidthProp(bUndo ? Data.oOldVal : Data.oNewVal);
ws.initColumn(col);
} else if (AscCH.historyitem_Worksheet_RowProp === Type) {
index = Data.index;
if (wb.bCollaborativeChanges) {
index = collaborativeEditing.getLockOtherRow2(nSheetId, index);
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(0, index, gc_nMaxCol0, index);
wb.aCollaborativeChangeElements.push(oLockInfo);
}
ws._getRow(index, function (row) {
if (bUndo) {
row.setHeightProp(Data.oOldVal);
} else {
row.setHeightProp(Data.oNewVal);
}
});
//нужно для того, чтобы грамотно выставлялись цвета в ф/т при ручном скрытии строк, затрагивающих ф/т(undo/redo)
//TODO для случая скрытия строк фильтром(undo), может два раза вызываться функция setColorStyleTable - пересмотреть
worksheetView = wb.oApi.wb.getWorksheetById(nSheetId);
if (worksheetView) {
worksheetView.model.autoFilters.reDrawFilter(null, index);
}
} else if (AscCH.historyitem_Worksheet_RowHide === Type) {
from = Data.from;
to = Data.to;
nRow = Data.bRow;
if (wb.bCollaborativeChanges) {
from = collaborativeEditing.getLockOtherRow2(nSheetId, from);
to = collaborativeEditing.getLockOtherRow2(nSheetId, to);
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(0, from, gc_nMaxCol0, to);
wb.aCollaborativeChangeElements.push(oLockInfo);
}
if (bUndo) {
nRow = !nRow;
}
ws.setRowHidden(nRow, from, to);
worksheetView = wb.oApi.wb.getWorksheetById(nSheetId);
if (worksheetView) {
worksheetView.model.autoFilters.reDrawFilter(new Asc.Range(0, from, ws.nColsCount - 1, to));
}
} else if (AscCH.historyitem_Worksheet_AddRows === Type || AscCH.historyitem_Worksheet_RemoveRows === Type) {
from = Data.from;
to = Data.to;
if (wb.bCollaborativeChanges) {
from = collaborativeEditing.getLockOtherRow2(nSheetId, from);
to = collaborativeEditing.getLockOtherRow2(nSheetId, to);
if (false == ((true == bUndo && AscCH.historyitem_Worksheet_AddRows === Type) ||
(false == bUndo && AscCH.historyitem_Worksheet_RemoveRows === Type))) {
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(0, from, gc_nMaxCol0, to);
wb.aCollaborativeChangeElements.push(oLockInfo);
}
}
range = new Asc.Range(0, from, gc_nMaxCol0, to);
if ((true == bUndo && AscCH.historyitem_Worksheet_AddRows === Type) ||
(false == bUndo && AscCH.historyitem_Worksheet_RemoveRows === Type)) {
ws.removeRows(from, to);
bInsert = false;
operType = c_oAscDeleteOptions.DeleteRows;
} else {
ws.insertRowsBefore(from, to - from + 1);
bInsert = true;
operType = c_oAscInsertOptions.InsertRows;
}
// Нужно поменять пересчетные индексы для совместного редактирования (lock-элементы), но только если это не изменения от другого пользователя
if (!wb.bCollaborativeChanges) {
ws.workbook.handlers.trigger("undoRedoAddRemoveRowCols", nSheetId, Type, range, bUndo);
}
// ToDo Так делать неправильно, нужно поправить (перенести логику в model, а отрисовку отделить)
worksheetView = wb.oApi.wb.getWorksheetById(nSheetId);
if (worksheetView) {
worksheetView.cellCommentator.updateCommentsDependencies(bInsert, operType, range);
worksheetView.shiftCellWatches(bInsert, operType, range);
if (wb.bCollaborativeChanges) {
changeFreezePane = worksheetView._getFreezePaneOffset(operType, range, bInsert);
if (changeFreezePane) {
worksheetView._updateFreezePane(changeFreezePane.col, changeFreezePane.row, true);
}
}
}
//ws.shiftDataValidation(bInsert, operType, range);
} else if (AscCH.historyitem_Worksheet_AddCols === Type || AscCH.historyitem_Worksheet_RemoveCols === Type) {
from = Data.from;
to = Data.to;
if (wb.bCollaborativeChanges) {
from = collaborativeEditing.getLockOtherColumn2(nSheetId, from);
to = collaborativeEditing.getLockOtherColumn2(nSheetId, to);
if (false == ((true == bUndo && AscCH.historyitem_Worksheet_AddCols === Type) ||
(false == bUndo && AscCH.historyitem_Worksheet_RemoveCols === Type))) {
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(from, 0, to, gc_nMaxRow0);
wb.aCollaborativeChangeElements.push(oLockInfo);
}
}
range = new Asc.Range(from, 0, to, gc_nMaxRow0);
if ((true == bUndo && AscCH.historyitem_Worksheet_AddCols === Type) ||
(false == bUndo && AscCH.historyitem_Worksheet_RemoveCols === Type)) {
ws.removeCols(from, to);
bInsert = false;
operType = c_oAscDeleteOptions.DeleteColumns;
} else {
ws.insertColsBefore(from, to - from + 1);
bInsert = true;
operType = c_oAscInsertOptions.InsertColumns;
}
// Нужно поменять пересчетные индексы для совместного редактирования (lock-элементы), но только если это не изменения от другого пользователя
if (!wb.bCollaborativeChanges) {
ws.workbook.handlers.trigger("undoRedoAddRemoveRowCols", nSheetId, Type, range, bUndo);
}
// ToDo Так делать неправильно, нужно поправить (перенести логику в model, а отрисовку отделить)
worksheetView = wb.oApi.wb.getWorksheetById(nSheetId);
if (worksheetView) {
worksheetView.cellCommentator.updateCommentsDependencies(bInsert, operType, range);
worksheetView.shiftCellWatches(bInsert, operType, range);
if (wb.bCollaborativeChanges) {
changeFreezePane = worksheetView._getFreezePaneOffset(operType, range, bInsert);
if (changeFreezePane) {
worksheetView._updateFreezePane(changeFreezePane.col, changeFreezePane.row, true);
}
}
}
//ws.shiftDataValidation(bInsert, operType, range)
} else if (AscCH.historyitem_Worksheet_ShiftCellsLeft === Type ||
AscCH.historyitem_Worksheet_ShiftCellsRight === Type) {
r1 = Data.r1;
c1 = Data.c1;
r2 = Data.r2;
c2 = Data.c2;
if (wb.bCollaborativeChanges) {
r1 = collaborativeEditing.getLockOtherRow2(nSheetId, r1);
c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, c1);
r2 = collaborativeEditing.getLockOtherRow2(nSheetId, r2);
c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, c2);
if (false == ((true == bUndo && AscCH.historyitem_Worksheet_ShiftCellsLeft === Type) ||
(false == bUndo && AscCH.historyitem_Worksheet_ShiftCellsRight === Type))) {
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(c1, r1, c2, r2);
wb.aCollaborativeChangeElements.push(oLockInfo);
}
}
range = ws.getRange3(r1, c1, r2, c2);
if ((true == bUndo && AscCH.historyitem_Worksheet_ShiftCellsLeft === Type) ||
(false == bUndo && AscCH.historyitem_Worksheet_ShiftCellsRight === Type)) {
range.addCellsShiftRight();
bInsert = true;
operType = c_oAscInsertOptions.InsertCellsAndShiftRight;
} else {
range.deleteCellsShiftLeft();
bInsert = false;
operType = c_oAscDeleteOptions.DeleteCellsAndShiftLeft;
}
// ToDo Так делать неправильно, нужно поправить (перенести логику в model, а отрисовку отделить)
worksheetView = wb.oApi.wb.getWorksheetById(nSheetId);
if (worksheetView) {
worksheetView.cellCommentator.updateCommentsDependencies(bInsert, operType, range.bbox);
worksheetView.shiftCellWatches(bInsert, operType, range.bbox);
}
} else if (AscCH.historyitem_Worksheet_ShiftCellsTop === Type ||
AscCH.historyitem_Worksheet_ShiftCellsBottom === Type) {
r1 = Data.r1;
c1 = Data.c1;
r2 = Data.r2;
c2 = Data.c2;
if (wb.bCollaborativeChanges) {
r1 = collaborativeEditing.getLockOtherRow2(nSheetId, r1);
c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, c1);
r2 = collaborativeEditing.getLockOtherRow2(nSheetId, r2);
c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, c2);
if (false == ((true == bUndo && AscCH.historyitem_Worksheet_ShiftCellsTop === Type) ||
(false == bUndo && AscCH.historyitem_Worksheet_ShiftCellsBottom === Type))) {
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(c1, r1, c2, r2);
wb.aCollaborativeChangeElements.push(oLockInfo);
}
}
range = ws.getRange3(r1, c1, r2, c2);
if ((true == bUndo && AscCH.historyitem_Worksheet_ShiftCellsTop === Type) ||
(false == bUndo && AscCH.historyitem_Worksheet_ShiftCellsBottom === Type)) {
range.addCellsShiftBottom();
bInsert = true;
operType = c_oAscInsertOptions.InsertCellsAndShiftDown;
} else {
range.deleteCellsShiftUp();
bInsert = false;
operType = c_oAscDeleteOptions.DeleteCellsAndShiftTop;
}
// ToDo Так делать неправильно, нужно поправить (перенести логику в model, а отрисовку отделить)
worksheetView = wb.oApi.wb.getWorksheetById(nSheetId);
if (worksheetView) {
worksheetView.cellCommentator.updateCommentsDependencies(bInsert, operType, range.bbox);
worksheetView.shiftCellWatches(bInsert, operType, range.bbox);
}
} else if (AscCH.historyitem_Worksheet_Sort == Type) {
var bbox = Data.bbox;
var places = Data.places;
var sortByRow = Data.sortByRow;
if (wb.bCollaborativeChanges) {
bbox.r1 = collaborativeEditing.getLockOtherRow2(nSheetId, bbox.r1);
bbox.c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, bbox.c1);
bbox.r2 = collaborativeEditing.getLockOtherRow2(nSheetId, bbox.r2);
bbox.c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, bbox.c2);
for (i = 0, length = Data.places.length; i < length; ++i) {
var place = Data.places[i];
place.from = sortByRow ? collaborativeEditing.getLockOtherColumn2(nSheetId, place.from) : collaborativeEditing.getLockOtherRow2(nSheetId, place.from);
place.to = sortByRow ? collaborativeEditing.getLockOtherColumn2(nSheetId, place.to) : collaborativeEditing.getLockOtherRow2(nSheetId, place.to);
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(bbox.c1, place.from, bbox.c2, place.from);
wb.aCollaborativeChangeElements.push(oLockInfo);
}
}
range = ws.getRange3(bbox.r1, bbox.c1, bbox.r2, bbox.c2);
range._sortByArray(bbox, places, null, sortByRow);
worksheetView = wb.oApi.wb.getWorksheetById(nSheetId);
if (worksheetView) {
worksheetView.model.autoFilters.resetTableStyles(bbox);
}
} else if (AscCH.historyitem_Worksheet_MoveRange == Type) {
//todo worksheetView.autoFilters._moveAutoFilters(worksheetView ,null, null, g_oUndoRedoAutoFiltersMoveData);
from = new Asc.Range(Data.from.c1, Data.from.r1, Data.from.c2, Data.from.r2);
to = new Asc.Range(Data.to.c1, Data.to.r1, Data.to.c2, Data.to.r2);
var copyRange = Data.copyRange;
var wsTo = wb.getWorksheetById(Data.sheetIdTo);
if (wsTo) {
if (bUndo) {
temp = from;
from = to;
to = temp;
if (wsTo) {
temp = wsTo;
wsTo = ws;
ws = temp;
}
}
if (wb.bCollaborativeChanges) {
var coBBoxTo = new Asc.Range(0, 0, 0, 0), coBBoxFrom = new Asc.Range(0, 0, 0, 0);
coBBoxTo.r1 = collaborativeEditing.getLockOtherRow2(nSheetId, to.r1);
coBBoxTo.c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, to.c1);
coBBoxTo.r2 = collaborativeEditing.getLockOtherRow2(nSheetId, to.r2);
coBBoxTo.c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, to.c2);
coBBoxFrom.r1 = collaborativeEditing.getLockOtherRow2(nSheetId, from.r1);
coBBoxFrom.c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, from.c1);
coBBoxFrom.r2 = collaborativeEditing.getLockOtherRow2(nSheetId, from.r2);
coBBoxFrom.c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, from.c2);
ws._moveRange(coBBoxFrom, coBBoxTo, copyRange, wsTo);
} else {
ws._moveRange(from, to, copyRange, wsTo);
}
}
worksheetView = wb.oApi.wb.getWorksheetById(nSheetId);
if (worksheetView) {
if (bUndo)//если на Undo перемещается диапазон из форматированной таблицы - стиль форматированной таблицы не должен цепляться
{
worksheetView.model.autoFilters._cleanStyleTable(to);
}
worksheetView.model.autoFilters.reDrawFilter(to);
worksheetView.model.autoFilters.reDrawFilter(from);
// clear traces
if (worksheetView.traceDependentsManager) {
worksheetView.traceDependentsManager.clearAll();
}
}
} else if (AscCH.historyitem_Worksheet_Rename == Type) {
if (bUndo) {
ws.setName(Data.from);
} else {
ws.setName(Data.to);
}
} else if (AscCH.historyitem_Worksheet_Hide == Type) {
if (bUndo) {
ws.setHidden(Data.from);
} else {
ws.setHidden(Data.to);
}
} else if (AscCH.historyitem_Worksheet_SetDisplayGridlines === Type) {
ws.setDisplayGridlines(bUndo ? Data.from : Data.to);
} else if (AscCH.historyitem_Worksheet_SetDisplayHeadings === Type) {
ws.setDisplayHeadings(bUndo ? Data.from : Data.to);
} else if (AscCH.historyitem_Worksheet_ChangeMerge === Type) {
from = null;
if (null != Data.from && null != Data.from.r1 && null != Data.from.c1 && null != Data.from.r2 &&
null != Data.from.c2) {
from = new Asc.Range(Data.from.c1, Data.from.r1, Data.from.c2, Data.from.r2);
if (wb.bCollaborativeChanges) {
from.r1 = collaborativeEditing.getLockOtherRow2(nSheetId, from.r1);
from.c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, from.c1);
from.r2 = collaborativeEditing.getLockOtherRow2(nSheetId, from.r2);
from.c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, from.c2);
}
}
to = null;
if (null != Data.to && null != Data.to.r1 && null != Data.to.c1 && null != Data.to.r2 &&
null != Data.to.c2) {
to = new Asc.Range(Data.to.c1, Data.to.r1, Data.to.c2, Data.to.r2);
if (wb.bCollaborativeChanges) {
to.r1 = collaborativeEditing.getLockOtherRow2(nSheetId, to.r1);
to.c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, to.c1);
to.r2 = collaborativeEditing.getLockOtherRow2(nSheetId, to.r2);
to.c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, to.c2);
}
}
if (bUndo) {
temp = from;
from = to;
to = temp;
}
if (null != from) {
var aMerged = ws.mergeManager.get(from);
for (i in aMerged.inner) {
var merged = aMerged.inner[i];
if (merged.bbox.isEqual(from)) {
ws.mergeManager.removeElement(merged);
break;
}
}
}
data = 1;
if (null != to) {
ws.mergeManager.add(to, data);
ws.workbook.handlers.trigger("changeDocument", AscCommonExcel.docChangedType.mergeRange, null, to, ws.getId());
}
} else if (AscCH.historyitem_Worksheet_ChangeHyperlink === Type) {
from = null;
if (null != Data.from && null != Data.from.r1 && null != Data.from.c1 && null != Data.from.r2 &&
null != Data.from.c2) {
from = new Asc.Range(Data.from.c1, Data.from.r1, Data.from.c2, Data.from.r2);
if (wb.bCollaborativeChanges) {
from.r1 = collaborativeEditing.getLockOtherRow2(nSheetId, from.r1);
from.c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, from.c1);
from.r2 = collaborativeEditing.getLockOtherRow2(nSheetId, from.r2);
from.c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, from.c2);
}
}
to = null;
if (null != Data.to && null != Data.to.r1 && null != Data.to.c1 && null != Data.to.r2 &&
null != Data.to.c2) {
to = new Asc.Range(Data.to.c1, Data.to.r1, Data.to.c2, Data.to.r2);
if (wb.bCollaborativeChanges) {
to.r1 = collaborativeEditing.getLockOtherRow2(nSheetId, to.r1);
to.c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, to.c1);
to.r2 = collaborativeEditing.getLockOtherRow2(nSheetId, to.r2);
to.c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, to.c2);
}
}
if (bUndo) {
temp = from;
from = to;
to = temp;
}
//не делаем clone потому что предполагаем, что здесь могут быть только операции изменения рзмеров, перемещение или удаления одной ссылки
data = null;
if (null != from) {
var aHyperlinks = ws.hyperlinkManager.get(from);
for (i in aHyperlinks.inner) {
var hyp = aHyperlinks.inner[i];
if (hyp.bbox.isEqual(from)) {
data = hyp.data;
ws.hyperlinkManager.removeElement(hyp);
break;
}
}
}
if (null == data) {
data = Data.hyperlink;
}
if (null != data && null != to) {
data.Ref = ws.getRange3(to.r1, to.c1, to.r2, to.c2);
ws.hyperlinkManager.add(to, data);
}
} else if (AscCH.historyitem_Worksheet_ChangeFrozenCell === Type) {
var updateData = bUndo ? Data.from : Data.to;
var _r1 = updateData.r1 > 0 ? collaborativeEditing.getLockOtherRow2(nSheetId, updateData.r1 - 1) : null;
var _c1 = updateData.c1 > 0 ? collaborativeEditing.getLockOtherColumn2(nSheetId, updateData.c1 - 1) : null;
if (_r1 !== null && _r1 !== updateData.r1 - 1) {
_r1++;
} else {
_r1 = updateData.r1;
}
if (_c1 !== null && _c1 !== updateData.c1 - 1) {
_c1++;
} else {
_c1 = updateData.c1;
}
worksheetView = wb.oApi.wb.getWorksheetById(nSheetId);
if (worksheetView) {
worksheetView._updateFreezePane(_c1, _r1, /*lockDraw*/true);
}
} else if (AscCH.historyitem_Worksheet_SetTabColor === Type) {
ws.setTabColor(bUndo ? Data.from : Data.to);
} else if (AscCH.historyitem_Worksheet_SetSummaryRight === Type) {
ws.setSummaryRight(bUndo ? Data.from : Data.to);
} else if (AscCH.historyitem_Worksheet_SetSummaryBelow === Type) {
ws.setSummaryBelow(bUndo ? Data.from : Data.to);
} else if (AscCH.historyitem_Worksheet_GroupRow == Type) {
index = Data.index;
if (wb.bCollaborativeChanges) {
index = collaborativeEditing.getLockOtherRow2(nSheetId, index);
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(0, index, gc_nMaxCol0, index);
wb.aCollaborativeChangeElements.push(oLockInfo);
}
ws._getRow(index, function (row) {
if (bUndo) {
row.setOutlineLevel(Data.oOldVal);
} else {
row.setOutlineLevel(Data.oNewVal);
}
});
} else if (AscCH.historyitem_Worksheet_GroupCol == Type) {
index = Data.index;
if (wb.bCollaborativeChanges) {
index = collaborativeEditing.getLockOtherRow2(nSheetId, index);
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(0, index, gc_nMaxCol0, index);
wb.aCollaborativeChangeElements.push(oLockInfo);
}
col = ws._getCol(index);
if (col) {
if (bUndo) {
col.setOutlineLevel(Data.oOldVal);
} else {
col.setOutlineLevel(Data.oNewVal);
}
}
} else if (AscCH.historyitem_Worksheet_CollapsedRow == Type) {
index = Data.index;
if (wb.bCollaborativeChanges) {
index = collaborativeEditing.getLockOtherRow2(nSheetId, index);
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(0, index, gc_nMaxCol0, index);
wb.aCollaborativeChangeElements.push(oLockInfo);
}
if (bUndo) {
ws.setCollapsedRow(Data.oOldVal, index);
} else {
ws.setCollapsedRow(Data.oNewVal, index);
}
} else if (AscCH.historyitem_Worksheet_CollapsedCol == Type) {
index = Data.index;
if (wb.bCollaborativeChanges) {
index = collaborativeEditing.getLockOtherRow2(nSheetId, index);
oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
oLockInfo["rangeOrObjectId"] = new Asc.Range(0, index, gc_nMaxCol0, index);
wb.aCollaborativeChangeElements.push(oLockInfo);
}
if (bUndo) {
ws.setCollapsedCol(Data.oOldVal, index);
} else {
ws.setCollapsedCol(Data.oNewVal, index);
}
} else if (AscCH.historyitem_Worksheet_SetFitToPage === Type) {
ws.setFitToPage(bUndo ? Data.from : Data.to);
} else if (AscCH.historyitem_Worksheet_PivotAdd === Type) {
if (bUndo) {
ws.deletePivotTable(Data.Id);
} else {
var pivot = Data.getData();
pivot.init();
ws.insertPivotTable(pivot, false, true);
}
} else if (AscCH.historyitem_Worksheet_PivotDelete === Type) {
if (bUndo) {
ws.insertPivotTable(Data.from, false, true);
} else {
ws.deletePivotTable(Data.pivot);
}
} else if (AscCH.historyitem_Worksheet_PivotReplace === Type) {
var data = bUndo ? Data.from : Data.to;
var pivot = data.getData();
pivot.init();
var oldPivot = ws.getPivotTableById(Data.pivot);
if (oldPivot) {
pivot.replaceSlicersPivotCacheDefinition(oldPivot.cacheDefinition, pivot.cacheDefinition);
}
ws.deletePivotTable(Data.pivot);
ws.insertPivotTable(pivot, false, false);
} else if (AscCH.historyitem_Worksheet_PivotReplaceKeepRecords === Type) {
var data = bUndo ? Data.from : Data.to;
var pivot = data.getData();
pivot.init();
var oldPivot = ws.getPivotTableById(Data.pivot);
if (oldPivot) {
pivot.cacheDefinition.cacheRecords = oldPivot.cacheDefinition.cacheRecords;
pivot.replaceSlicersPivotCacheDefinition(oldPivot.cacheDefinition, pivot.cacheDefinition);
ws.deletePivotTable(Data.pivot);
ws.insertPivotTable(pivot, false, false);
}
} else if (AscCH.historyitem_Worksheet_SlicerAdd === Type) {
if (bUndo) {
ws.deleteSlicer(Data.to.name);
} else {
ws.aSlicers.push(Data.to);
Data.to.init(null, null, null, ws);
wb.onSlicerUpdate(Data.to.name);
}
} else if (AscCH.historyitem_Worksheet_SlicerDelete === Type) {
if (bUndo) {
ws.aSlicers.push(Data.from);
Data.from.init(null, null, null, ws);
wb.onSlicerUpdate(Data.from.name);
} else {
ws.deleteSlicer(Data.from.name);
}
} else if (AscCH.historyitem_Worksheet_SetActiveNamedSheetView === Type) {
if (ws.aNamedSheetViews) {
var activeId = bUndo ? Data.from : Data.to;
var namedSheetView = ws.getNamedSheetViewById(activeId);
for (i = 0; i < ws.aNamedSheetViews.length; i++) {
ws.aNamedSheetViews[i]._isActive = false;
}
ws.setActiveNamedSheetView(activeId);
if (namedSheetView) {
namedSheetView._isActive = true;
}
ws.autoFilters.reapplyAllFilters(true, ws.getActiveNamedSheetViewId() !== null, true);
}
} else if (AscCH.historyitem_Worksheet_SheetViewAdd === Type) {
if (bUndo) {
ws.deleteNamedSheetViews([ws.getNamedSheetViewById(Data.Id)], true);
} else {
ws.addNamedSheetView(Data.getData(), true);
}
} else if (AscCH.historyitem_Worksheet_SheetViewDelete === Type) {
if (bUndo) {
ws.addNamedSheetView(Data.from);
} else {
ws.deleteNamedSheetViews([ws.getNamedSheetViewById(Data.sheetView)], true);
}
} else if (AscCH.historyitem_Worksheet_DataValidationAdd === Type) {
if (bUndo) {
ws.deleteDataValidationById(Data.id);
} else {
var _dataValidation = Data.to;
_dataValidation.Id = Data.id;
if (wb.bCollaborativeChanges) {
if (_dataValidation.ranges) {
for (i = 0; i < _dataValidation.ranges.length; i++) {
_dataValidation.ranges[i].r1 = collaborativeEditing.getLockOtherRow2(nSheetId, _dataValidation.ranges[i].r1);
_dataValidation.ranges[i].c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, _dataValidation.ranges[i].c1);
_dataValidation.ranges[i].r2 = collaborativeEditing.getLockOtherRow2(nSheetId, _dataValidation.ranges[i].r2);
_dataValidation.ranges[i].c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, _dataValidation.ranges[i].c2);
}
}
}
ws.addDataValidation(_dataValidation);
_dataValidation._init(ws);
}
} else if (AscCH.historyitem_Worksheet_DataValidationChange === Type) {
var dataValidationTo = bUndo ? Data.from : Data.to;
var dataValidationFrom = ws.getDataValidationById(Data.id);
if (dataValidationFrom) {
dataValidationTo.Id = Data.id;
if (wb.bCollaborativeChanges) {
if (dataValidationTo.ranges) {
for (i = 0; i < dataValidationTo.ranges.length; i++) {
dataValidationTo.ranges[i].r1 = collaborativeEditing.getLockOtherRow2(nSheetId, dataValidationTo.ranges[i].r1);
dataValidationTo.ranges[i].c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, dataValidationTo.ranges[i].c1);
dataValidationTo.ranges[i].r2 = collaborativeEditing.getLockOtherRow2(nSheetId, dataValidationTo.ranges[i].r2);
dataValidationTo.ranges[i].c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, dataValidationTo.ranges[i].c2);
}
}
}
ws.dataValidations.elems[dataValidationFrom.index] = dataValidationTo;
}
} else if (AscCH.historyitem_Worksheet_DataValidationDelete === Type) {
if (bUndo) {
ws.addDataValidation(Data.from);
} else {
ws.deleteDataValidationById(Data.id);
}
} else if (AscCH.historyitem_Worksheet_CFRuleAdd === Type) {
if (bUndo) {
ws.deleteCFRule(Data.id);
} else {
Data.to.id = Data.id;
ws.addCFRule(Data.to);
}
} else if (AscCH.historyitem_Worksheet_CFRuleDelete === Type) {
if (bUndo) {
ws.addCFRule(Data.from);
} else {
ws.deleteCFRule(Data.id);
}
} else if (AscCH.historyitem_Worksheet_SetShowZeros === Type) {
ws.setShowZeros(bUndo ? Data.from : Data.to);
} else if (AscCH.historyitem_Worksheet_SetShowFormulas === Type) {
//except - apply changes in other user
if (window["NATIVE_EDITOR_ENJINE"] || !wb.oApi.isDocumentLoadComplete || !wb.bCollaborativeChanges) {
ws.setShowFormulas(bUndo ? Data.from : Data.to);
}
} else if (AscCH.historyitem_Worksheet_SetTopLeftCell === Type) {
ws.setTopLeftCell(Data.to ? new Asc.Range(Data.to.c1, Data.to.r1, Data.to.c2, Data.to.r2) : null);
} else if (AscCH.historyitem_Worksheet_AddProtectedRange === Type) {
if (bUndo) {
ws.deleteProtectedRange(Data.id);
} else {
Data.to.Id = Data.id;
ws.addProtectedRange(Data.to);
}
} else if (AscCH.historyitem_Worksheet_DelProtectedRange === Type) {
if (bUndo) {
ws.addProtectedRange(Data.from);
} else {
ws.deleteProtectedRange(Data.id);
}
} else if (AscCH.historyitem_Worksheet_AddCellWatch === Type) {
if (Data.to) {
range = new Asc.Range(Data.to.c1, Data.to.r1, Data.to.c2, Data.to.r2);
if (bUndo) {
ws.deleteCellWatch(range);
} else {
ws.addCellWatch(range);
}
wb.handlers.trigger("changeCellWatches");
}
} else if (AscCH.historyitem_Worksheet_DelCellWatch === Type) {
if (Data.from) {
range = new Asc.Range(Data.from.c1, Data.from.r1, Data.from.c2, Data.from.r2);
if (bUndo) {
ws.addCellWatch(range);
} else {
ws.deleteCellWatch(range);
}
wb.handlers.trigger("changeCellWatches");
}
} else if (AscCH.historyitem_Worksheet_ChangeUserProtectedRange === Type) {
//TODO lock ?
//var _r1 = updateData.r1 > 0 ? collaborativeEditing.getLockOtherRow2(nSheetId, updateData.r1 - 1) : null;
//var _c1 = updateData.c1 > 0 ? collaborativeEditing.getLockOtherColumn2(nSheetId, updateData.c1 - 1) : null;
if (bUndo) {
ws.editUserProtectedRanges(Data.to, Data.from);
} else {
ws.editUserProtectedRanges(Data.from, Data.to);
}
} else if (AscCH.historyitem_Worksheet_SetSheetViewType === Type) {
//накатываем только при открытии
/*if (this.wb.bCollaborativeChanges) {
ws.setTopLeftCell(Data.to ? new Asc.Range(Data.to.c1, Data.to.r1, Data.to.c2, Data.to.r2) : null);
}*/
//except - apply changes in other user
if (window["NATIVE_EDITOR_ENJINE"] || !wb.oApi.isDocumentLoadComplete || !wb.bCollaborativeChanges) {
ws.setSheetViewType(bUndo ? Data.from : Data.to);
}
} else if (AscCH.historyitem_Worksheet_ChangeRowColBreaks === Type) {
let from, to, min, max, man, pt, byCol;
if (bUndo) {
from = Data.to && Data.to.id;
to = Data.from && Data.from.id;
min = Data.from && Data.from.min;
max = Data.from && Data.from.max;
man = Data.from && Data.from.man;
pt = Data.from && Data.from.pt;
byCol = (Data.from && Data.from.byCol) || (Data.to && Data.to.byCol);
} else {
from = Data.from && Data.from.id;
to = Data.to && Data.to.id;
min = Data.to && Data.to.min;
max = Data.to && Data.to.max;
man = Data.to && Data.to.man;
pt = Data.to && Data.to.pt;
byCol = (Data.from && Data.from.byCol) || (Data.to && Data.to.byCol);
}
ws._changeRowColBreaks(from, to, min, max, man, pt, byCol);
} else if (AscCH.historyitem_Worksheet_ChangeLegacyDrawingHFDrawing === Type) {
let from, to;
if (bUndo) {
let fromId = Data.to && Data.to.id;
if (fromId) {
from = new AscCommonExcel.CLegacyDrawingHFDrawing();
from.id = fromId;
from.graphicObject = AscCommon.g_oTableId.Get_ById(Data.to.graphicId);
}
let toId = Data.from && Data.from.id;
if (toId) {
to = new AscCommonExcel.CLegacyDrawingHFDrawing();
to.id = toId;
to.graphicObject = AscCommon.g_oTableId.Get_ById(Data.from.graphicId);
}
} else {
let fromId = Data.from && Data.from.id;
if (fromId) {
from = new AscCommonExcel.CLegacyDrawingHFDrawing();
from.id = fromId;
from.graphicObject = AscCommon.g_oTableId.Get_ById(Data.from.graphicId);
}
let toId = Data.to && Data.to.id;
if (toId) {
to = new AscCommonExcel.CLegacyDrawingHFDrawing();
to.id = toId;
to.graphicObject = AscCommon.g_oTableId.Get_ById(Data.to.graphicId);
}
}
if (!ws.legacyDrawingHF) {
ws.legacyDrawingHF = new AscCommonExcel.CLegacyDrawingHF(ws);
}
ws.legacyDrawingHF.changePicture(from, to);
} else if (AscCH.historyitem_Worksheet_TimelineDelete === Type) {
if (bUndo) {
ws.timelines.push(Data.from);
} else {
wb.onTimelinesDelete(Data.from.name);
}
} else if (AscCH.historyitem_Worksheet_SetRightToLeft === Type) {
//накатываем только при открытии
if (!bUndo && this.wb.bCollaborativeChanges) {
ws.setRightToLeft(bUndo ? Data.from : Data.to);
}
}
};
UndoRedoWoorksheet.prototype.forwardTransformationIsAffect = function (Type) {
return AscCH.historyitem_Worksheet_AddRows === Type || AscCH.historyitem_Worksheet_RemoveRows === Type ||
AscCH.historyitem_Worksheet_AddCols === Type || AscCH.historyitem_Worksheet_RemoveCols === Type ||
AscCH.historyitem_Worksheet_ShiftCellsLeft === Type || AscCH.historyitem_Worksheet_ShiftCellsRight ===
Type || AscCH.historyitem_Worksheet_ShiftCellsTop === Type ||
AscCH.historyitem_Worksheet_ShiftCellsBottom === Type || AscCH.historyitem_Worksheet_MoveRange === Type ||
AscCH.historyitem_Worksheet_Rename === Type || AscCH.historyitem_Worksheet_RemoveCell === Type;
};
UndoRedoWoorksheet.prototype.forwardTransformationGet = function (Type, Data, nSheetId) {
if (AscCH.historyitem_Worksheet_Rename === Type) {
return {from: Data.from, name: Data.to};
} else if (AscCH.historyitem_Worksheet_RemoveCell === Type && Data.oNewVal && Data.oNewVal.value && Data.oNewVal.value.formula) {
return {formula: Data.oNewVal.value.formula};
}
return null;
};
UndoRedoWoorksheet.prototype.forwardTransformationSet = function (Type, Data, nSheetId, getRes) {
if (AscCH.historyitem_Worksheet_Rename === Type) {
Data.from = getRes.from;
Data.to = getRes.name;
} else if (AscCH.historyitem_Worksheet_RemoveCell === Type) {
if (Data && Data.oNewVal && Data.oNewVal.value) {
Data.oNewVal.value.formula = getRes.formula;
}
}
return null;
};
UndoRedoWoorksheet.prototype.CommuteRelatedCell = function (oData, oActionOther) {
if (!oData) {
return true;
}
let res = this.CommuteRelatedCell2(oData.nRow, oData.nCol, oActionOther);
if (res) {
oData.nRow = this.tmpCell.nRow;
oData.nCol = this.tmpCell.nCol;
}
return res;
}
UndoRedoWoorksheet.prototype.CommuteRelatedCell2 = function (nRow, nCol, oActionOther) {
if (AscCommonExcel.g_oUndoRedoWorksheet !== oActionOther.oClass) {
this.tmpCell.nRow = nRow;
this.tmpCell.nCol = nCol;
return true;
}
let isAddRow = AscCH.historyitem_Worksheet_AddRows === oActionOther.nActionType;
let isAddCol = AscCH.historyitem_Worksheet_AddCols === oActionOther.nActionType;
let isRemoveRow = AscCH.historyitem_Worksheet_RemoveRows === oActionOther.nActionType;
let isRemoveCol = AscCH.historyitem_Worksheet_RemoveCols === oActionOther.nActionType;
let isAdd = isAddRow || isAddCol;
let isRemove = isRemoveRow || isRemoveCol;
let isShiftLeft = AscCH.historyitem_Worksheet_ShiftCellsLeft === oActionOther.nActionType;
let isShiftRight = AscCH.historyitem_Worksheet_ShiftCellsRight === oActionOther.nActionType;
let isShiftTop = AscCH.historyitem_Worksheet_ShiftCellsTop === oActionOther.nActionType;
let isShiftBottom = AscCH.historyitem_Worksheet_ShiftCellsBottom === oActionOther.nActionType;
let isShiftMove = AscCH.historyitem_Worksheet_MoveRange === oActionOther.nActionType;
let isShift = isShiftRight || isShiftBottom;
let isUnShift = isShiftLeft || isShiftTop;
if (isAdd || isRemove) {
let from = oActionOther.oData.from;
let to = oActionOther.oData.to;
let len = to - from + 1;
let index = (isAddRow || isRemoveRow) ? nRow : nCol;
if (isAdd) {
if (index >= from) {
index += len;
}
} else if (isRemove) {
if (index > from){
index -= len;
} else if (from <= index && index <= to) {
//не восстанавливаем действия внутри диапазона который уже удален. как google drive
return false;
}
}
(isAddRow || isRemoveRow) ? nRow = index : nCol = index;
} else if (isShift || isUnShift) {
let r1 = oActionOther.oData.r1;
let c1 = oActionOther.oData.c1;
let r2 = oActionOther.oData.r2;
let c2 = oActionOther.oData.c2;
let width = c2 - c1 + 1;
let height = r2 - r1 + 1;
if (isShiftLeft) {
if (r1 <= nRow && nRow <= r2) {
if (c2 < nCol) {
nCol -= width;
} else if (c1 <= nCol) {
return false;
}
}
} else if (isShiftRight) {
if (r1 <= nRow && nRow <= r2) {
if (c1 <= nCol) {
nCol += width;
}
}
} else if (isShiftTop) {
if (c1 <= nCol && nCol <= c2) {
if (r2 < nRow) {
nRow -= height;
} else if (r1 <= nRow) {
return false;
}
}
} else if (isShiftBottom) {
if (c1 <= nCol && nCol <= c2) {
if (r1 <= nRow) {
nRow += height;
}
}
}
} else if (isShiftMove) {
if (oActionOther.oData.from.r1 <= nRow && nRow <= oActionOther.oData.from.r2 && oActionOther.oData.from.c1 <= nCol && nCol <= oActionOther.oData.from.c2) {
nRow += oActionOther.oData.to.r1 - oActionOther.oData.from.r1;
nCol += oActionOther.oData.to.c1 - oActionOther.oData.from.c1;
}
}
this.tmpCell.nRow = nRow;
this.tmpCell.nCol = nCol;
return true;
}
UndoRedoWoorksheet.prototype.CommuteRelatedRange = function (oData, oActionOther) {
if (!oData) {
return true;
}
let res = this.CommuteRelatedRange2(oData.r1, oData.c1, oData.r2, oData.c2, oActionOther);
if (res) {
oData.r1 = this.tmpRange.r1;
oData.c1 = this.tmpRange.c1;
oData.r2 = this.tmpRange.r2;
oData.c2 = this.tmpRange.c2;
}
return res;
}
UndoRedoWoorksheet.prototype.CommuteRelatedRange2 = function (r1, c1, r2, c2, oActionOther) {
if (AscCommonExcel.g_oUndoRedoWorksheet !== oActionOther.oClass) {
this.tmpRange.r1 = r1;
this.tmpRange.c1 = c1;
this.tmpRange.r2 = r2;
this.tmpRange.c2 = c2;
return true;
}
let nActionType = oActionOther.nActionType;
let oData = oActionOther.oData;
if (AscCH.historyitem_Worksheet_AddRows === nActionType || AscCH.historyitem_Worksheet_AddCols === nActionType ||
AscCH.historyitem_Worksheet_RemoveRows === nActionType || AscCH.historyitem_Worksheet_RemoveCols === nActionType) {
let from = oData.from;
let to = oData.to;
let len = to - from + 1;
if (AscCH.historyitem_Worksheet_AddRows === nActionType) {
if (from <= r1) {
r1 += len;
r2 += len;
} else if (from <= r2) {
r2 += len;
}
} else if (AscCH.historyitem_Worksheet_AddCols === nActionType) {
if (from <= c1) {
c1 += len;
c2 += len;
} else if (from <= c2) {
c2 += len;
}
} else if (AscCH.historyitem_Worksheet_RemoveRows === nActionType) {
if (to < r1) {
r1 -= len;
r2 -= len;
} else if (from <= r1 && to < r2) {
r1 = to + 1;
} else if (r1 < from && to < r2) {
r2 -= len;
} else if (from <= r1 && r2 <= to) {
return false;
} else if (r1 < from && from <= r2) {
r2 = from - 1;
}
} else if (AscCH.historyitem_Worksheet_RemoveCols === nActionType) {
if (to < c1) {
c1 -= len;
c2 -= len;
} else if (from <= c1 && to < c2) {
c1 = to + 1;
} else if (c1 < from && to < c2) {
c2 -= len;
} else if (from <= c1 && c2 <= to) {
return false;
} else if (c1 < from && from <= c2) {
c2 = from - 1;
}
}
} else if (AscCH.historyitem_Worksheet_ShiftCellsLeft === nActionType ||
AscCH.historyitem_Worksheet_ShiftCellsRight === nActionType ||
AscCH.historyitem_Worksheet_ShiftCellsTop === nActionType ||
AscCH.historyitem_Worksheet_ShiftCellsBottom === nActionType) {
let r1Shift = oData.r1;
let c1Shift = oData.c1;
let r2Shift = oData.r2;
let c2Shift = oData.c2;
let width = c2Shift - c1Shift + 1;
let height = r2Shift - r1Shift + 1;
if (AscCH.historyitem_Worksheet_ShiftCellsLeft === nActionType) {
if (r1Shift <= r1 && r2 <= r2Shift) {
if (c2Shift < c1) {
c1 -= width;
c2 -= width;
} else if (c1Shift <= c1 && c2Shift < c2) {
c1 = c2Shift + 1;
} else if (c1 < c1Shift && c2Shift < c2) {
c2 -= width;
} else if (c1Shift <= c1 && c2 <= c2Shift) {
return false;
} else if (c1 < c1Shift && c1Shift <= c2) {
c2 = c1Shift - 1;
}
} else if ((r1 <= r1Shift && r1Shift <= r2) || (r1 <= r2Shift && r2Shift <= r2)) {
return false;
}
} else if (AscCH.historyitem_Worksheet_ShiftCellsRight === nActionType) {
if (r1Shift <= r1 && r2 <= r2Shift) {
if (c1Shift <= c1) {
c1 += width;
c2 += width;
} else if (c1Shift <= c2) {
c2 += width;
}
} else if ((r1 <= r1Shift && r1Shift <= r2) || (r1 <= r2Shift && r2Shift <= r2)) {
return false;
}
} else if (AscCH.historyitem_Worksheet_ShiftCellsTop === nActionType) {
if (c1Shift <= c1 && c2 <= c2Shift) {
if (r2Shift < r1) {
r1 -= height;
r2 -= height;
} else if (r1Shift <= r1 && r2Shift < r2) {
r1 = r2Shift + 1;
} else if (r1 < r1Shift && r2Shift < r2) {
r2 -= height;
} else if (r1Shift <= r1 && r2 <= r2Shift) {
return false;
} else if (r1 < r1Shift && r1Shift <= r2) {
r2 = r1Shift - 1;
}
} else if ((c1 <= c1Shift && c1Shift <= c2) || (c1 <= c2Shift && c2Shift <= c2)) {
return false;
}
} else if (AscCH.historyitem_Worksheet_ShiftCellsBottom === nActionType) {
if (c1Shift <= c1 && c2 <= c2Shift) {
if (r1Shift <= r1) {
r1 += height;
r2 += height;
} else if (r1Shift <= r2) {
r2 += height;
}
} else if ((c1 <= c1Shift && c1Shift <= c2) || (c1 <= c2Shift && c2Shift <= c2)) {
return false;
}
}
} else if (AscCH.historyitem_Worksheet_MoveRange === nActionType) {
if (oData.from.r1 <= r1 && r2 <= oData.from.r2 &&
oData.from.c1 <= c1 && c2 <= oData.from.c2) {
r1 += oData.to.r1 - oData.from.r1;
r2 += oData.to.r1 - oData.from.r1;
c1 += oData.to.c1 - oData.from.c1;
c2 += oData.to.c1 - oData.from.c1;
} else if(oData.to.r1 <= r1 && r2 <= oData.to.r2 &&
oData.to.c1 <= c1 && c2 <= oData.to.c2) {
return false;
}
}
this.tmpRange.r1 = r1;
this.tmpRange.c1 = c1;
this.tmpRange.r2 = r2;
this.tmpRange.c2 = c2;
return true;
}
UndoRedoWoorksheet.prototype.CommuteRelatedRowCol = function (oData, isRow, oActionOther) {
let res = this.CommuteRelatedRowCol2(oData.index, oData.index, isRow, oActionOther);
if (res) {
oData.index = isRow ? this.tmpRange.r1 : this.tmpRange.c1;
}
return res;
}
UndoRedoWoorksheet.prototype.CommuteRelatedRowColFromTo = function (oData, isRow, oActionOther) {
let res = this.CommuteRelatedRowCol2(oData.from, oData.to, isRow, oActionOther);
if (res) {
if (isRow) {
oData.from = this.tmpRange.r1;
oData.to = this.tmpRange.r2;
} else {
oData.from = this.tmpRange.c1;
oData.to = this.tmpRange.c2;
}
}
return res;
}
UndoRedoWoorksheet.prototype.CommuteRelatedRowCol2 = function (from, to, isRow, oActionOther) {
let r1 = 0;
let c1 = 0;
let r2 = gc_nMaxRow0;
let c2 = gc_nMaxCol0;
if (isRow) {
r1 = from;
r2 = to;
} else {
c1 = from;
c2 = to;
}
return this.CommuteRelatedRange2(r1, c1, r2, c2, oActionOther);
}
function UndoRedoRowCol(wb, bRow) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.bRow = bRow;
this.nTypeRow = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoRow;
});
this.nTypeCol = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoCol;
});
}
UndoRedoRowCol.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoRowCol.prototype.getClassType = function () {
if (this.bRow) {
return this.nTypeRow;
} else {
return this.nTypeCol;
}
};
UndoRedoRowCol.prototype.CreateReverseChangeSpreadsheet = function (ToClass, Type, nSheetId, oRange, Data, LocalChange) {
Data = Data.CreateReverseChangeSpreadsheet();
return new UndoRedoItemSerializable(ToClass, Type, nSheetId, oRange, Data, LocalChange);
};
UndoRedoRowCol.prototype.CommuteRelated = function (oActionToUndo, oActionOther) {
return AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedRowCol(oActionToUndo.oData, this.bRow, oActionOther);
}
UndoRedoRowCol.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoRowCol.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoRowCol.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var ws = this.wb.getWorksheetById(nSheetId);
if (null == ws) {
return;
}
var nIndex = Data.index;
if (this.wb.bCollaborativeChanges) {
var collaborativeEditing = this.wb.oApi.collaborativeEditing;
var oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = nSheetId;
oLockInfo["type"] = c_oAscLockTypeElem.Range;
if (this.bRow) {
nIndex = collaborativeEditing.getLockOtherRow2(nSheetId, nIndex);
oLockInfo["rangeOrObjectId"] = new Asc.Range(0, nIndex, gc_nMaxCol0, nIndex);
} else {
if (AscCommonExcel.g_nAllColIndex == nIndex) {
oLockInfo["rangeOrObjectId"] = new Asc.Range(0, 0, gc_nMaxCol0, gc_nMaxRow0);
} else {
nIndex = collaborativeEditing.getLockOtherColumn2(nSheetId, nIndex);
oLockInfo["rangeOrObjectId"] = new Asc.Range(nIndex, 0, nIndex, gc_nMaxRow0);
}
}
this.wb.aCollaborativeChangeElements.push(oLockInfo);
}
var Val;
if (bUndo) {
Val = Data.oOldVal;
} else {
Val = Data.oNewVal;
}
function fAction(row) {
if (AscCH.historyitem_RowCol_SetFont == Type) {
row.setFont(Val);
} else if (AscCH.historyitem_RowCol_Fontname == Type) {
row.setFontname(Val);
} else if (AscCH.historyitem_RowCol_Fontsize == Type) {
row.setFontsize(Val);
} else if (AscCH.historyitem_RowCol_Fontcolor == Type) {
row.setFontcolor(Val);
} else if (AscCH.historyitem_RowCol_Bold == Type) {
row.setBold(Val);
} else if (AscCH.historyitem_RowCol_Italic == Type) {
row.setItalic(Val);
} else if (AscCH.historyitem_RowCol_Underline == Type) {
row.setUnderline(Val);
} else if (AscCH.historyitem_RowCol_Strikeout == Type) {
row.setStrikeout(Val);
} else if (AscCH.historyitem_RowCol_FontAlign == Type) {
row.setFontAlign(Val);
} else if (AscCH.historyitem_RowCol_AlignVertical == Type) {
row.setAlignVertical(Val);
} else if (AscCH.historyitem_RowCol_AlignHorizontal == Type) {
row.setAlignHorizontal(Val);
} else if (AscCH.historyitem_RowCol_ReadingOrder == Type) {
row.setReadingOrder(Val);
} else if (AscCH.historyitem_RowCol_Fill == Type) {
row.setFill(Val);
} else if (AscCH.historyitem_RowCol_Border == Type) {
if (null != Val) {
row.setBorder(Val.clone());
} else {
row.setBorder(null);
}
} else if (AscCH.historyitem_RowCol_ShrinkToFit == Type) {
row.setShrinkToFit(Val);
} else if (AscCH.historyitem_RowCol_Wrap == Type) {
row.setWrap(Val);
} else if (AscCH.historyitem_RowCol_Num == Type) {
row.setNum(Val);
} else if (AscCH.historyitem_RowCol_Angle == Type) {
row.setAngle(Val);
} else if (AscCH.historyitem_RowCol_SetStyle == Type) {
row.setStyle(Val);
} else if (AscCH.historyitem_RowCol_SetCellStyle == Type) {
row.setCellStyle(Val);
} else if (AscCH.historyitem_RowCol_Indent == Type) {
row.setIndent(Val);
} else if (AscCH.historyitem_RowCol_ApplyProtection == Type) {
row.setApplyProtection(Val);
} else if (AscCH.historyitem_RowCol_Locked == Type) {
row.setLocked(Val);
} else if (AscCH.historyitem_RowCol_HiddenFormulas == Type) {
row.setHiddenFormulas(Val);
}
}
if (this.bRow) {
ws._getRow(nIndex, fAction);
} else {
var row = ws._getCol(nIndex);
fAction(row);
}
};
function UndoRedoComment(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoComment;
});
}
UndoRedoComment.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoComment.prototype.getClassType = function () {
return this.nType;
};
UndoRedoComment.prototype.CreateReverseChangeSpreadsheet = function (ToClass, Type, nSheetId, oRange, Data, LocalChange) {
if (Type === AscCH.historyitem_Comment_Add) {
Type = AscCH.historyitem_Comment_Remove;
} else if (Type === AscCH.historyitem_Comment_Remove) {
Type = AscCH.historyitem_Comment_Add;
} else if (Type === AscCH.historyitem_Comment_Change || Type === AscCH.historyitem_Comment_Coords) {
Data = Data.CreateReverseChangeSpreadsheet();
}
return new AscCommonExcel.UndoRedoItemSerializable(ToClass, Type, nSheetId, oRange, Data, LocalChange);
};
UndoRedoComment.prototype.CommuteRelated = function (oActionToUndo, oActionOther) {
let res = true;
if (AscCH.historyitem_Comment_Add === oActionToUndo.nActionType || AscCH.historyitem_Comment_Add === oActionToUndo.nActionType) {
res = AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedCell(oActionToUndo.oData, oActionOther);
if(oActionToUndo.oData.coords) {
res = res && AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedCell(oActionToUndo.oData.coords, oActionOther);
}
} else if (AscCH.historyitem_Comment_Change === oActionToUndo.nActionType || AscCH.historyitem_Comment_Coords === oActionToUndo.nActionType) {
res = AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedCell(oActionToUndo.oData.from, oActionOther);
res = res && AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedCell(oActionToUndo.oData.to, oActionOther);
}
return res;
}
UndoRedoComment.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoComment.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoComment.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var collaborativeEditing, to;
var oModel = (null == nSheetId) ? this.wb : this.wb.getWorksheetById(nSheetId);
var api = window["Asc"]["editor"];
if (!api.wb || !oModel) {
return;
}
var ws = (null == nSheetId) ? api.wb : api.wb.getWorksheetById(nSheetId);
Data.worksheet = ws;
var cellCommentator = ws.cellCommentator;
if (bUndo) {
cellCommentator.Undo(Type, Data);
} else {
to = (Data.from || Data.to) ? Data.to : Data;
if (to && !to.bDocument && this.wb.bCollaborativeChanges) {
collaborativeEditing = this.wb.oApi.collaborativeEditing;
to.nRow = collaborativeEditing.getLockOtherRow2(nSheetId, to.nRow);
to.nCol = collaborativeEditing.getLockOtherColumn2(nSheetId, to.nCol);
}
cellCommentator.Redo(Type, Data);
}
};
function UndoRedoSortState(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoSortState;
});
}
UndoRedoSortState.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoSortState.prototype.getClassType = function () {
return this.nType;
};
UndoRedoSortState.prototype.CreateReverseChangeSpreadsheet = function (ToClass, Type, nSheetId, oRange, Data, LocalChange) {
if (AscCH.historyitem_SortState_Add === Type) {
Data = Data.CreateReverseChangeSpreadsheet();
} else {
return;
}
return new UndoRedoItemSerializable(ToClass, Type, nSheetId, oRange, Data, LocalChange);
};
UndoRedoSortState.prototype.CommuteRelated = function (oActionToUndo, oActionOther) {
return true;
}
UndoRedoSortState.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoSortState.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoSortState.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var collaborativeEditing, to;
var oModel = (null == nSheetId) ? this.wb : this.wb.getWorksheetById(nSheetId);
var api = window["Asc"]["editor"];
if (!api.wb || !oModel) {
return;
}
var ws = (null == nSheetId) ? api.wb : api.wb.getWorksheetById(nSheetId);
Data.worksheet = ws;
if (Data.bFilter) {
if (Data.tableName) {
var table = ws.model.autoFilters._getFilterByDisplayName(Data.tableName);
table.SortState = bUndo ? Data.from : Data.to;
} else {
ws.model.AutoFilter.SortState = bUndo ? Data.from : Data.to;
}
} else {
ws.model.sortState = bUndo ? Data.from : Data.to;
}
};
function UndoRedoAutoFilters(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoAutoFilters;
});
}
UndoRedoAutoFilters.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoAutoFilters.prototype.getClassType = function () {
return this.nType;
};
UndoRedoAutoFilters.prototype.Undo = function (Type, Data, nSheetId, opt_wb) {
this.UndoRedo(Type, Data, nSheetId, true, opt_wb);
};
UndoRedoAutoFilters.prototype.Redo = function (Type, Data, nSheetId, opt_wb) {
this.UndoRedo(Type, Data, nSheetId, false, opt_wb);
};
UndoRedoAutoFilters.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo, opt_wb) {
var wb = opt_wb ? opt_wb : this.wb;
var ws = wb.getWorksheetById(nSheetId);
if (ws) {
var autoFilters = ws.autoFilters;
if (bUndo === true) {
autoFilters.Undo(Type, Data);
} else {
var collaborativeEditing = this.wb.oApi.collaborativeEditing;
if (AscCH.historyitem_AutoFilter_ChangeColumnName === Type ||
AscCH.historyitem_AutoFilter_ChangeTotalRow === Type) {
if (this.wb.bCollaborativeChanges) {
Data.nRow = collaborativeEditing.getLockOtherRow2(nSheetId, Data.nRow);
Data.nCol = collaborativeEditing.getLockOtherColumn2(nSheetId, Data.nCol);
}
} else if (AscCH.historyitem_AutoFilter_Apply === Type ||
AscCH.historyitem_AutoFilter_ClearFilterColumn === Type) {
var _obj = Data.autoFiltersObject ? Data.autoFiltersObject : Data;
if (_obj.cellId !== undefined) {
var curCellId = _obj.cellId.split('af')[0];
var range;
AscCommonExcel.executeInR1C1Mode(false, function () {
range = AscCommonExcel.g_oRangeCache.getAscRange(curCellId).clone();
});
var nRow = collaborativeEditing.getLockOtherRow2(nSheetId, range.r1);
var nCol = collaborativeEditing.getLockOtherColumn2(nSheetId, range.c1);
if (nCol !== range.c1 || nRow !== range.r1) {
_obj.cellId = new AscCommon.CellBase(nRow, nCol).getName();
}
}
}
autoFilters.Redo(Type, Data);
}
}
};
UndoRedoAutoFilters.prototype.forwardTransformationIsAffect = function (Type) {
return AscCH.historyitem_AutoFilter_Add === Type || AscCH.historyitem_AutoFilter_ChangeTableName === Type ||
AscCH.historyitem_AutoFilter_Empty === Type || AscCH.historyitem_AutoFilter_ChangeColumnName === Type;
};
UndoRedoAutoFilters.prototype.CreateReverseChangeSpreadsheet = function (ToClass, nActionType, nSheetId, oRange, oData, LocalChange) {
let type, data;
if (AscCH.historyitem_AutoFilter_Add === nActionType) {
type = AscCH.historyitem_AutoFilter_Empty;
data = new AscCommonExcel.UndoRedoData_AutoFilter();
data.activeCells = oData.activeCells;
} else {
return;
}
return new UndoRedoItemSerializable(ToClass, type, nSheetId, oRange, data, LocalChange);
};
UndoRedoAutoFilters.prototype.CommuteRelated = function (oActionToUndo, oActionOther) {
if (AscCommonExcel.g_oUndoRedoAutoFilters === oActionOther.oClass) {
//изменения в форматированной таблице. например добавление total
return false;
}
let res = true;
if (AscCH.historyitem_AutoFilter_Empty === oActionToUndo.nActionType) {
if(oActionToUndo.oData.activeCells) {
res = AscCommonExcel.g_oUndoRedoWorksheet.CommuteRelatedRange(oActionToUndo.oData.activeCells, oActionOther);
}
}
return res;
}
function UndoRedoSparklines(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoSparklines;
});
}
UndoRedoSparklines.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoSparklines.prototype.getClassType = function () {
return this.nType;
};
UndoRedoSparklines.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoSparklines.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoSparklines.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
};
function UndoRedoSharedFormula(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoSharedFormula;
});
}
UndoRedoSharedFormula.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoSharedFormula.prototype.getClassType = function () {
return this.nType;
};
UndoRedoSharedFormula.prototype.Undo = function (Type, Data, nSheetId, opt_wb) {
this.UndoRedo(Type, Data, nSheetId, true, opt_wb);
};
UndoRedoSharedFormula.prototype.Redo = function (Type, Data, nSheetId, opt_wb) {
this.UndoRedo(Type, Data, nSheetId, false, opt_wb);
};
UndoRedoSharedFormula.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo, opt_wb) {
var wb = opt_wb ? opt_wb : this.wb;
var parsed = wb.workbookFormulas.get(Data.index);
if (parsed && bUndo) {
var val = bUndo ? Data.oOldVal : Data.oNewVal;
if (AscCH.historyitem_SharedFormula_ChangeFormula == Type) {
parsed.removeDependencies();
parsed.setFormula(val);
wb.dependencyFormulas.addToBuildDependencyShared(parsed);
} else if (AscCH.historyitem_SharedFormula_ChangeShared == Type) {
parsed.setSharedRef(val, Data.bRow);
}
}
};
function UndoRedoRedoLayout(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoLayout;
});
}
UndoRedoRedoLayout.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoRedoLayout.prototype.getClassType = function () {
return this.nType;
};
UndoRedoRedoLayout.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoRedoLayout.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoRedoLayout.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var ws = this.wb.getWorksheetById(nSheetId);
if (!ws) {
return;
}
var pageOptions = ws.PagePrintOptions;
var pageSetup = pageOptions.asc_getPageSetup();
var pageMargins = pageOptions.asc_getPageMargins();
var value = bUndo ? Data.from : Data.to;
switch (Type) {
case AscCH.historyitem_Layout_Left:
pageMargins.asc_setLeft(value);
break;
case AscCH.historyitem_Layout_Right:
pageMargins.asc_setRight(value);
break;
case AscCH.historyitem_Layout_Top:
pageMargins.asc_setTop(value);
break;
case AscCH.historyitem_Layout_Bottom:
pageMargins.asc_setBottom(value);
break;
case AscCH.historyitem_Layout_Width:
pageSetup.asc_setWidth(value);
break;
case AscCH.historyitem_Layout_Height:
pageSetup.asc_setHeight(value);
break;
case AscCH.historyitem_Layout_FitToWidth:
pageSetup.asc_setFitToWidth(value);
break;
case AscCH.historyitem_Layout_FitToHeight:
pageSetup.asc_setFitToHeight(value);
break;
case AscCH.historyitem_Layout_GridLines:
pageOptions.asc_setGridLines(value);
break;
case AscCH.historyitem_Layout_Headings:
pageOptions.asc_setHeadings(value);
break;
case AscCH.historyitem_Layout_Orientation:
pageSetup.asc_setOrientation(value);
break;
case AscCH.historyitem_Layout_Scale:
pageSetup.asc_setScale(value);
break;
case AscCH.historyitem_Layout_FirstPageNumber:
pageSetup.asc_setFirstPageNumber(value);
break;
case AscCH.historyitem_Layout_HorizontalCentered:
pageOptions.asc_setHorizontalCentered(value);
break;
case AscCH.historyitem_Layout_VerticalCentered:
pageOptions.asc_setVerticalCentered(value);
break;
}
this.wb.oApi._onUpdateLayoutMenu(nSheetId);
};
//***array-formula***
function UndoRedoArrayFormula(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoArrayFormula;
});
}
UndoRedoArrayFormula.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoArrayFormula.prototype.getClassType = function () {
return this.nType;
};
UndoRedoArrayFormula.prototype.Undo = function (Type, Data, nSheetId, opt_wb) {
this.UndoRedo(Type, Data, nSheetId, true, opt_wb);
};
UndoRedoArrayFormula.prototype.Redo = function (Type, Data, nSheetId, opt_wb) {
this.UndoRedo(Type, Data, nSheetId, false, opt_wb);
};
UndoRedoArrayFormula.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo, opt_wb) {
var ws = this.wb.getWorksheetById(nSheetId);
if (null == ws) {
return;
}
var bbox = Data.range;
var formula = Data.formula;
var range = ws.getRange3(bbox.r1, bbox.c1, bbox.r2, bbox.c2);
switch (Type) {
case AscCH.historyitem_ArrayFromula_AddFormula:
if (!bUndo) {
AscCommonExcel.executeInR1C1Mode(false, function () {
range.setValue(formula, null, null, bbox);
});
}
break;
case AscCH.historyitem_ArrayFromula_DeleteFormula:
if (bUndo) {
range.setValue(formula, null, null, bbox);
}
break;
}
};
function UndoRedoHeaderFooter(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoHeaderFooter;
});
}
UndoRedoHeaderFooter.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoHeaderFooter.prototype.getClassType = function () {
return this.nType;
};
UndoRedoHeaderFooter.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoHeaderFooter.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoHeaderFooter.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var ws = this.wb.getWorksheetById(nSheetId);
if (!ws) {
return;
}
var headerFooter = ws.headerFooter;
var value = bUndo ? Data.from : Data.to;
switch (Type) {
case AscCH.historyitem_Header_First:
headerFooter.setFirstHeader(value);
break;
case AscCH.historyitem_Header_Even:
headerFooter.setEvenHeader(value);
break;
case AscCH.historyitem_Header_Odd:
headerFooter.setOddHeader(value);
break;
case AscCH.historyitem_Footer_First:
headerFooter.setFirstFooter(value);
break;
case AscCH.historyitem_Footer_Even:
headerFooter.setEvenFooter(value);
break;
case AscCH.historyitem_Footer_Odd:
headerFooter.setOddFooter(value);
break;
case AscCH.historyitem_Align_With_Margins:
headerFooter.setAlignWithMargins(value);
break;
case AscCH.historyitem_Scale_With_Doc:
headerFooter.setScaleWithDoc(value);
break;
case AscCH.historyitem_Different_First:
headerFooter.setDifferentFirst(value);
break;
case AscCH.historyitem_Different_Odd_Even:
headerFooter.setDifferentOddEven(value);
break;
}
};
function UndoRedoPivotTables(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoPivotTables;
});
}
UndoRedoPivotTables.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoPivotTables.prototype.getClassType = function () {
return this.nType;
};
UndoRedoPivotTables.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoPivotTables.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoPivotTables.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var ws = this.wb.getWorksheetById(nSheetId);
if (!ws) {
return;
}
var pivotTable = ws.getPivotTableById(Data.pivot);
if (!pivotTable) {
return;
}
pivotTable.stashCurReportRange();
var value = bUndo ? Data.from : Data.to;
var valueFrom = bUndo ? Data.to : Data.from;
switch (Type) {
case AscCH.historyitem_PivotTable_StyleName:
pivotTable.asc_getStyleInfo()._setName(value, pivotTable, ws);
break;
case AscCH.historyitem_PivotTable_StyleShowRowHeaders:
pivotTable.asc_getStyleInfo()._setShowRowHeaders(value, pivotTable, ws);
break;
case AscCH.historyitem_PivotTable_StyleShowColHeaders:
pivotTable.asc_getStyleInfo()._setShowColHeaders(value, pivotTable, ws);
break;
case AscCH.historyitem_PivotTable_StyleShowRowStripes:
pivotTable.asc_getStyleInfo()._setShowRowStripes(value, pivotTable, ws);
break;
case AscCH.historyitem_PivotTable_StyleShowColStripes:
pivotTable.asc_getStyleInfo()._setShowColStripes(value, pivotTable, ws);
break;
case AscCH.historyitem_PivotTable_SetName:
pivotTable.asc_setName(value);
break;
case AscCH.historyitem_PivotTable_SetRowHeaderCaption:
pivotTable.asc_setRowHeaderCaption(value);
break;
case AscCH.historyitem_PivotTable_SetColHeaderCaption:
pivotTable.asc_setColHeaderCaption(value);
break;
case AscCH.historyitem_PivotTable_SetDataCaption:
pivotTable.asc_setDataCaption(value);
break;
case AscCH.historyitem_PivotTable_SetRowGrandTotals:
pivotTable.asc_setRowGrandTotals(value);
break;
case AscCH.historyitem_PivotTable_SetColGrandTotals:
pivotTable.asc_setColGrandTotals(value);
break;
case AscCH.historyitem_PivotTable_SetPageOverThenDown:
pivotTable.asc_setPageOverThenDown(value);
break;
case AscCH.historyitem_PivotTable_SetPageWrap:
pivotTable.asc_setPageWrap(value);
break;
case AscCH.historyitem_PivotTable_SetShowHeaders:
pivotTable.asc_setShowHeaders(value);
break;
case AscCH.historyitem_PivotTable_SetGrandTotalCaption:
pivotTable.asc_setGrandTotalCaption(value);
break;
case AscCH.historyitem_PivotTable_SetCompact:
pivotTable.asc_setCompact(value);
break;
case AscCH.historyitem_PivotTable_SetOutline:
pivotTable.asc_setOutline(value);
break;
case AscCH.historyitem_PivotTable_SetGridDropZones:
pivotTable.asc_setGridDropZones(value);
break;
case AscCH.historyitem_PivotTable_UseAutoFormatting:
pivotTable.asc_setUseAutoFormatting(value);
break;
case AscCH.historyitem_PivotTable_SetFillDownLabelsDefault:
pivotTable.setFillDownLabelsDefault(value, false);
break;
case AscCH.historyitem_PivotTable_SetDataOnRows:
pivotTable.setDataOnRows(value);
break;
case AscCH.historyitem_PivotTable_SetDataPosition:
pivotTable.setDataPosition(value);
break;
case AscCH.historyitem_PivotTable_SetAltText:
pivotTable.setTitle(value);
break;
case AscCH.historyitem_PivotTable_SetAltTextSummary:
pivotTable.setDescription(value);
break;
case AscCH.historyitem_PivotTable_HideValuesRow:
pivotTable.setHideValuesRow(value);
break;
case AscCH.historyitem_PivotTable_AddPageField:
if (bUndo) {
pivotTable.removeNoDataField(Data.from);
} else {
pivotTable.addPageField(Data.from, Data.to);
}
break;
case AscCH.historyitem_PivotTable_AddRowField:
if (bUndo) {
pivotTable.removeNoDataField(Data.from);
} else {
pivotTable.addRowField(Data.from, Data.to);
}
break;
case AscCH.historyitem_PivotTable_AddColField:
if (bUndo) {
pivotTable.removeNoDataField(Data.from);
} else {
pivotTable.addColField(Data.from, Data.to);
}
break;
case AscCH.historyitem_PivotTable_AddDataField:
if (bUndo) {
pivotTable.removeDataField(Data.from, Data.to);
} else {
pivotTable.addDataField({
pivotIndex: Data.from,
insertIndex: Data.to,
name: Data.name
});
}
break;
case AscCH.historyitem_PivotTable_RemovePageField:
if (bUndo) {
pivotTable.addPageField(Data.from, Data.to);
} else {
pivotTable.removeNoDataField(Data.from);
}
break;
case AscCH.historyitem_PivotTable_RemoveRowField:
if (bUndo) {
pivotTable.addRowField(Data.from, Data.to);
} else {
pivotTable.removeNoDataField(Data.from);
}
break;
case AscCH.historyitem_PivotTable_RemoveColField:
if (bUndo) {
pivotTable.addColField(Data.from, Data.to);
} else {
pivotTable.removeNoDataField(Data.from);
}
break;
case AscCH.historyitem_PivotTable_RemoveDataField:
if (bUndo) {
for (var i = Data.to.length - 1; i >= 0; --i) {
pivotTable.addDataField({
pivotIndex: Data.from,
insertIndex: Data.to[i],
name: Data.name[i]
});
}
} else {
for (var i = 0; i < Data.to.length; ++i) {
pivotTable.removeDataField(Data.from, Data.to[i]);
}
}
break;
case AscCH.historyitem_PivotTable_MovePageField:
pivotTable.moveField(pivotTable.asc_getPageFields(), valueFrom, value);
break;
case AscCH.historyitem_PivotTable_MoveRowField:
pivotTable.moveField(pivotTable.asc_getRowFields(), valueFrom, value);
break;
case AscCH.historyitem_PivotTable_MoveColField:
pivotTable.moveField(pivotTable.asc_getColumnFields(), valueFrom, value);
break;
case AscCH.historyitem_PivotTable_MoveDataField:
pivotTable.moveField(pivotTable.asc_getDataFields(), valueFrom, value);
break;
case AscCH.historyitem_PivotTable_RowItems:
pivotTable.setRowItems(value);
break;
case AscCH.historyitem_PivotTable_ColItems:
pivotTable.setColItems(value);
break;
case AscCH.historyitem_PivotTable_Location:
pivotTable.setLocation(value);
break;
case AscCH.historyitem_PivotTable_CacheField:
var cacheFields = pivotTable.asc_getCacheFields();
if (cacheFields && cacheFields[Data.index]) {
cacheFields[Data.index].checkSharedItems(pivotTable, Data.index, pivotTable.getRecords());
}
break;
case AscCH.historyitem_PivotTable_PivotField:
var pivotFields = pivotTable.asc_getPivotFields();
if (pivotFields[Data.index]) {
pivotFields[Data.index] = value;
}
break;
case AscCH.historyitem_PivotTable_PivotFilter:
if (value) {
if (!pivotTable.filters) {
pivotTable.filters = new CT_PivotFilters();
}
pivotTable.filters.filter.splice(Data.index, 0, value);
} else if (pivotTable.filters) {
pivotTable.filters.filter.splice(Data.index, 1);
if (pivotTable.filters.filter.length == 0) {
pivotTable.filters = null;
}
}
break;
case AscCH.historyitem_PivotTable_PivotFilterDataField:
var pivotFilters = pivotTable.asc_getPivotFilters();
if (pivotFilters && Data.index < pivotFilters.length) {
pivotFilters[Data.index].dataField = value;
}
break;
case AscCH.historyitem_PivotTable_PivotFilterMeasureFld:
var pivotFilters = pivotTable.asc_getPivotFilters();
if (pivotFilters && Data.index < pivotFilters.length) {
pivotFilters[Data.index].setMeasureFld(value);
}
break;
case AscCH.historyitem_PivotTable_PageFilter:
var pageField = pivotTable.getPageFieldByFieldIndex(Data.index);
if (pageField) {
pageField.item = value;
}
break;
case AscCH.historyitem_PivotTable_PivotCacheId:
pivotTable.setPivotCacheId(value);
break;
case AscCH.historyitem_PivotTable_FormatsReindex:
if (bUndo) {
pivotTable.formats = value;
} else {
pivotTable.formatsManager.reIndexDataFields(value, false);
}
break;
case AscCH.historyitem_PivotTable_FormatsRemoveField:
if (bUndo) {
pivotTable.formats = value;
} else {
pivotTable.formatsManager.removeField(value, false);
}
break;
case AscCH.historyitem_PivotTable_FormatsAddRowField:
if (bUndo) {
pivotTable.formats = value;
} else {
pivotTable.formatsManager.addRowField(value, false);
}
break;
case AscCH.historyitem_PivotTable_FormatsAddColField:
if (bUndo) {
pivotTable.formats = value;
} else {
pivotTable.formatsManager.addColField(value, false);
}
break;
}
};
function UndoRedoPivotCache(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoPivotCache;
});
}
UndoRedoPivotCache.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoPivotCache.prototype.getClassType = function () {
return this.nType;
};
UndoRedoPivotCache.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoPivotCache.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoPivotCache.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
const cacheDefinition = this.wb.getPivotTableById(Data.pivot).cacheDefinition;
switch (Type) {
case AscCH.historyitem_PivotCache_SetCalculatedItems:
bUndo ? cacheDefinition.setCalculatedItems(Data.from) : cacheDefinition.setCalculatedItems(Data.to);
break;
}
};
function UndoRedoCacheFields(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoCacheFields;
});
}
UndoRedoCacheFields.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoCacheFields.prototype.getClassType = function () {
return this.nType;
};
UndoRedoCacheFields.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoCacheFields.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoCacheFields.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
const cacheDefinition = this.wb.getPivotTableById(Data.pivot).cacheDefinition;
switch (Type) {
case AscCH.historyitem_PivotCacheFields_SetCacheField:
bUndo ? cacheDefinition.setCacheField(Data.index, Data.from) : cacheDefinition.setCacheField(Data.index, Data.to);
break;
}
};
function UndoRedoPivotFields(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoPivotFields;
});
}
UndoRedoPivotFields.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoPivotFields.prototype.getClassType = function () {
return this.nType;
};
UndoRedoPivotFields.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoPivotFields.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoPivotFields.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var ws = this.wb.getWorksheetById(nSheetId);
if (!ws) {
return;
}
var pivotTable = ws.getPivotTableById(Data.pivot);
if (!pivotTable) {
return;
}
var fields;
if (Type === AscCH.historyitem_PivotTable_DataFieldSetName ||
Type === AscCH.historyitem_PivotTable_DataFieldSetSubtotal ||
Type === AscCH.historyitem_PivotTable_DataFieldSetShowDataAs ||
Type === AscCH.historyitem_PivotTable_DataFieldSetBaseField ||
Type === AscCH.historyitem_PivotTable_DataFieldSetBaseItem ||
Type === AscCH.historyitem_PivotTable_DataFieldSetNumFormat) {
fields = pivotTable.asc_getDataFields();
} else {
fields = pivotTable.asc_getPivotFields();
}
var index = AscCH.historyitem_PivotTable_PivotFieldVisible === Type ? Data.index.from : Data.index;
if (!fields || !fields[index]) {
return;
}
var field = fields[index];
pivotTable.stashCurReportRange();
var value = bUndo ? Data.from : Data.to;
var valueFrom = bUndo ? Data.to : Data.from;
switch (Type) {
case AscCH.historyitem_PivotTable_PivotFieldSetName:
field.asc_setName(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_PivotFieldSetOutline:
field.asc_setOutline(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_PivotFieldSetCompact:
field.asc_setCompact(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_PivotFieldFillDownLabelsDefault:
field.setFillDownLabelsDefault(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_PivotFieldSetInsertBlankRow:
field.asc_setInsertBlankRow(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_PivotFieldSetDefaultSubtotal:
field.asc_setDefaultSubtotal(value, pivotTable, index);
field.checkSubtotal();
break;
case AscCH.historyitem_PivotTable_PivotFieldSetSubtotalTop:
field.asc_setSubtotalTop(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_PivotFieldSetSubtotalCaption:
field.asc_setSubtotalCaption(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_PivotFieldSetShowAll:
field.asc_setShowAll(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_PivotFieldVisible:
field.asc_setVisible(value, pivotTable, index, Data.index.to);
break;
case AscCH.historyitem_PivotTable_PivotFieldSetSubtotals:
field.setSubtotals(value, pivotTable, index);
field.checkSubtotal();
break;
case AscCH.historyitem_PivotTable_PivotFieldSetNumFormat:
field.setNumFormat(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_DataFieldSetName:
field.asc_setName(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_DataFieldSetSubtotal:
field.asc_setSubtotal(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_DataFieldSetShowDataAs:
field.asc_setShowDataAs(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_DataFieldSetBaseField:
field.asc_setBaseField(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_DataFieldSetBaseItem:
field.asc_setBaseItem(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_DataFieldSetNumFormat:
field.setNumFormat(value, pivotTable, index);
break;
case AscCH.historyitem_PivotTable_PivotFieldMoveItem:
field.moveItem(pivotTable, index, valueFrom, value);
break;
}
};
function UndoRedoPivotFieldItems(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoPivotFieldItems;
});
}
UndoRedoPivotFieldItems.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoPivotFieldItems.prototype.getClassType = function () {
return this.nType;
};
UndoRedoPivotFieldItems.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoPivotFieldItems.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoPivotFieldItems.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var ws = this.wb.getWorksheetById(nSheetId);
if (!ws) {
return;
}
var pivotTable = ws.getPivotTableById(Data.pivot);
if (!pivotTable) {
return;
}
var field = pivotTable.asc_getPivotFields()[Data.pivotIndex];
var pivotFieldItem = field.getItem(Data.itemIndex)
pivotTable.stashCurReportRange();
var value = bUndo ? Data.from : Data.to;
switch (Type) {
case AscCH.historyitem_PivotTable_PivotFieldItemSetName:
pivotFieldItem.asc_setName(value, pivotTable, Data.pivotIndex, Data.itemIndex);
break;
}
};
function UndoRedoSlicer(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoSlicer;
});
}
UndoRedoSlicer.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoSlicer.prototype.getClassType = function () {
return this.nType;
};
UndoRedoSlicer.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoSlicer.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoSlicer.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var oModel = (null == nSheetId) ? this.wb : this.wb.getWorksheetById(nSheetId);
var api = window["Asc"]["editor"];
if (!api.wb || !oModel) {
return;
}
var slicer, slicerCache;
switch (Type) {
case AscCH.historyitem_Slicer_SetCaption: {
slicer = oModel.getSlicerByName(Data.name);
if (slicer) {
slicer.setCaption(bUndo ? Data.from : Data.to);
}
break;
}
case AscCH.historyitem_Slicer_SetCacheSourceName: {
slicer = oModel.getSlicerByName(Data.name);
if (slicer) {
slicer.setSourceName(bUndo ? Data.from : Data.to);
}
break;
}
case AscCH.historyitem_Slicer_SetTableColName: {
slicer = oModel.getSlicerByName(Data.name);
if (slicer) {
slicer.setTableCacheColName(bUndo ? Data.from : Data.to);
}
break;
}
case AscCH.historyitem_Slicer_SetTableName: {
slicer = oModel.getSlicerByName(Data.name);
if (slicer) {
slicer.setTableName(bUndo ? Data.from : Data.to);
}
break;
}
case AscCH.historyitem_Slicer_SetCacheName: {
slicer = oModel.getSlicerByName(Data.name);
if (slicer) {
slicer.setCacheName(bUndo ? Data.from : Data.to);
}
break;
}
case AscCH.historyitem_Slicer_SetName: {
slicer = oModel.getSlicerByName(bUndo ? Data.to : Data.from);
if (slicer) {
slicer.setName(bUndo ? Data.from : Data.to);
this.wb.onSlicerUpdate(bUndo ? Data.from : Data.to);
}
break;
}
case AscCH.historyitem_Slicer_SetStartItem: {
slicer = oModel.getSlicerByName(Data.name);
if (slicer) {
slicer.startItem = bUndo ? Data.from : Data.to;
}
break;
}
case AscCH.historyitem_Slicer_SetColumnCount: {
slicer = oModel.getSlicerByName(Data.name);
if (slicer) {
slicer.columnCount = bUndo ? Data.from : Data.to;
}
break;
}
case AscCH.historyitem_Slicer_SetShowCaption: {
slicer = oModel.getSlicerByName(Data.name);
if (slicer) {
slicer.showCaption = bUndo ? Data.from : Data.to;
}
break;
}
case AscCH.historyitem_Slicer_SetLevel: {
slicer = oModel.getSlicerByName(Data.name);
if (slicer) {
slicer.level = bUndo ? Data.from : Data.to;
}
break;
}
case AscCH.historyitem_Slicer_SetStyle: {
slicer = oModel.getSlicerByName(Data.name);
if (slicer) {
slicer.style = bUndo ? Data.from : Data.to;
}
break;
}
case AscCH.historyitem_Slicer_SetLockedPosition: {
slicer = oModel.getSlicerByName(Data.name);
if (slicer) {
slicer.lockedPosition = bUndo ? Data.from : Data.to;
}
break;
}
case AscCH.historyitem_Slicer_SetRowHeight: {
slicer = oModel.getSlicerByName(Data.name);
if (slicer) {
slicer.rowHeight = bUndo ? Data.from : Data.to;
}
break;
}
case AscCH.historyitem_Slicer_SetCacheSortOrder: {
slicerCache = oModel.getSlicerCacheByName(Data.name);
if (slicerCache) {
slicerCache.setSortOrder(bUndo ? Data.from : Data.to);
}
break;
}
case AscCH.historyitem_Slicer_SetCacheCustomListSort: {
slicerCache = oModel.getSlicerCacheByName(Data.name);
if (slicerCache) {
slicerCache.setCustomListSort(bUndo ? Data.from : Data.to);
}
break;
}
case AscCH.historyitem_Slicer_SetCacheCrossFilter: {
slicerCache = oModel.getSlicerCacheByName(Data.name);
if (slicerCache) {
slicerCache.setCrossFilter(bUndo ? Data.from : Data.to);
}
break;
}
case AscCH.historyitem_Slicer_SetCacheHideItemsWithNoData: {
slicerCache = oModel.getSlicerCacheByName(Data.name);
if (slicerCache) {
slicerCache.setHideItemsWithNoData(bUndo ? Data.from : Data.to);
}
break;
}
case AscCH.historyitem_Slicer_SetCacheData: {
slicerCache = oModel.getSlicerCacheByName(Data.name);
if (slicerCache) {
var wrapper = bUndo ? Data.from : Data.to;
var cache = new Asc.CT_slicerCacheDefinition();
wrapper.initObject(cache);
cache.initAfterSerialize(this.wb);
slicerCache.copyFrom(cache);
}
break;
}
case AscCH.historyitem_Slicer_SetCacheMovePivot: {
slicerCache = oModel.getSlicerCacheByName(Data.name);
if (slicerCache) {
var from = bUndo ? Data.to : Data.from;
var to = bUndo ? Data.from : Data.to;
slicerCache.movePivotTable(from.value, from.style, to.value, to.style);
}
break;
}
case AscCH.historyitem_Slicer_SetCacheCopySheet: {
slicerCache = oModel.getSlicerCacheByName(Data.name);
if (slicerCache) {
var from = bUndo ? Data.to : Data.from;
var to = bUndo ? Data.from : Data.to;
slicerCache.forCopySheet(from, to);
}
break;
}
}
};
function UndoRedoCF(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoCF;
});
}
UndoRedoCF.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoCF.prototype.getClassType = function () {
return this.nType;
};
UndoRedoCF.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoCF.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoCF.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var t = this;
var oModel = (null == nSheetId) ? this.wb : this.wb.getWorksheetById(nSheetId);
var api = window["Asc"]["editor"];
if (!api.wb || !oModel) {
return;
}
var collaborativeEditing = this.wb.oApi.collaborativeEditing;
let cfRule = oModel.getCFRuleById(Data.id, true)
if (cfRule) {
var value = bUndo ? Data.from : Data.to;
switch (Type) {
case AscCH.historyitem_CFRule_SetAboveAverage: {
cfRule.asc_setAboveAverage(value);
break;
}
case AscCH.historyitem_CFRule_SetActivePresent: {
cfRule.activePresent = value;
break;
}
case AscCH.historyitem_CFRule_SetBottom: {
cfRule.asc_setBottom(value);
break;
}
case AscCH.historyitem_CFRule_SetEqualAverage: {
cfRule.asc_setEqualAverage(value);
break;
}
case AscCH.historyitem_CFRule_SetOperator: {
cfRule.asc_setOperator(value);
break;
}
case AscCH.historyitem_CFRule_SetPercent: {
cfRule.asc_setPercent(value);
break;
}
case AscCH.historyitem_CFRule_SetPriority: {
cfRule.asc_setPriority(value);
break;
}
case AscCH.historyitem_CFRule_SetRank: {
cfRule.asc_setRank(value);
break;
}
case AscCH.historyitem_CFRule_SetStdDev: {
cfRule.asc_setStdDev(value);
break;
}
case AscCH.historyitem_CFRule_SetStopIfTrue: {
cfRule.asc_setStopIfTrue(value);
break;
}
case AscCH.historyitem_CFRule_SetText: {
cfRule.asc_setText(value);
break;
}
case AscCH.historyitem_CFRule_SetTimePeriod: {
cfRule.asc_setTimePeriod(value);
break;
}
case AscCH.historyitem_CFRule_SetType: {
cfRule.asc_setType(value);
break;
}
case AscCH.historyitem_CFRule_SetPivot: {
cfRule.pivot = value;
break;
}
case AscCH.historyitem_CFRule_SetDxf: {
cfRule.asc_setDxf(value);
break;
}
case AscCH.historyitem_CFRule_SetRanges: {
var toAscRanges = function (_ranges) {
var ascRanges = [];
for (var i = 0; i < _ranges.length; i++) {
var r1 = t.wb.bCollaborativeChanges ? collaborativeEditing.getLockOtherRow2(nSheetId, _ranges[i].r1) : _ranges[i].r1;
var c1 = t.wb.bCollaborativeChanges ? collaborativeEditing.getLockOtherColumn2(nSheetId, _ranges[i].c1) : _ranges[i].c1;
var r2 = t.wb.bCollaborativeChanges ? collaborativeEditing.getLockOtherRow2(nSheetId, _ranges[i].r2) : _ranges[i].r2;
var c2 = t.wb.bCollaborativeChanges ? collaborativeEditing.getLockOtherColumn2(nSheetId, _ranges[i].c2) : _ranges[i].c2;
ascRanges.push(new Asc.Range(c1, r1, c2, r2));
}
return ascRanges;
};
cfRule.ranges = toAscRanges(value);
if (oModel) {
oModel.cleanConditionalFormattingRangeIterator();
}
break;
}
case AscCH.historyitem_CFRule_SetRuleElements: {
cfRule.aRuleElements = value;
break;
}
}
}
};
function UndoRedoProtectedRange(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoProtectedRange;
});
}
UndoRedoProtectedRange.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoProtectedRange.prototype.getClassType = function () {
return this.nType;
};
UndoRedoProtectedRange.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoProtectedRange.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoProtectedRange.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var oModel = (null == nSheetId) ? this.wb : this.wb.getWorksheetById(nSheetId);
var api = window["Asc"]["editor"];
if (!api.wb || !oModel) {
return;
}
var collaborativeEditing = this.wb.oApi.collaborativeEditing;
var protectedRange = oModel.getProtectedRangeById(Data.id);
if (protectedRange && protectedRange.val) {
var value = bUndo ? Data.from : Data.to;
protectedRange = protectedRange.val;
switch (Type) {
case AscCH.historyitem_Protected_SetName: {
protectedRange.asc_setName(value);
break;
}
case AscCH.historyitem_Protected_SetAlgorithmName: {
protectedRange.asc_setAlgorithmName(value);
break;
}
case AscCH.historyitem_Protected_SetHashValue: {
protectedRange.asc_setHashValue(value);
break;
}
case AscCH.historyitem_Protected_SetSaltValue: {
protectedRange.asc_setSaltValue(value);
break;
}
case AscCH.historyitem_Protected_SetSpinCount: {
protectedRange.asc_setSpinCount(value);
break;
}
case AscCH.historyitem_Protected_SetSqref: {
var toAscRanges = function (_ranges) {
var ascRanges = [];
for (var i = 0; i < _ranges.length; i++) {
var r1 = collaborativeEditing.getLockOtherRow2(nSheetId, _ranges[i].r1);
var c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, _ranges[i].c1);
var r2 = collaborativeEditing.getLockOtherRow2(nSheetId, _ranges[i].r2);
var c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, _ranges[i].c2);
ascRanges.push(new Asc.Range(c1, r1, c2, r2));
}
return ascRanges;
};
protectedRange.sqref = toAscRanges(value);
break;
}
}
}
};
function UndoRedoProtectedSheet(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoProtectedSheet;
});
}
UndoRedoProtectedSheet.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoProtectedSheet.prototype.getClassType = function () {
return this.nType;
};
UndoRedoProtectedSheet.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoProtectedSheet.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoProtectedSheet.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var oModel = (null == nSheetId) ? this.wb : this.wb.getWorksheetById(nSheetId);
var api = window["Asc"]["editor"];
if (!api.wb || !oModel) {
return;
}
var protectedSheet = oModel.sheetProtection;
if (!protectedSheet) {
oModel.sheetProtection = protectedSheet = new window["Asc"].CSheetProtection();
oModel.sheetProtection.setDefaultInterface();
}
if (protectedSheet) {
var value = bUndo ? Data.from : Data.to;
switch (Type) {
case AscCH.historyitem_Protected_SetAlgorithmName: {
protectedSheet.setAlgorithmName(value);
break;
}
case AscCH.historyitem_Protected_SetHashValue: {
protectedSheet.setHashValue(value);
break;
}
case AscCH.historyitem_Protected_SetSaltValue: {
protectedSheet.setSaltValue(value);
break;
}
case AscCH.historyitem_Protected_SetSpinCount: {
protectedSheet.setSpinCount(value);
break;
}
case AscCH.historyitem_Protected_SetPassword: {
protectedSheet.setPasswordXL(value);
break;
}
case AscCH.historyitem_Protected_SetSheet: {
protectedSheet.setSheet(value);
break;
}
case AscCH.historyitem_Protected_SetObjects: {
protectedSheet.setObjects(value);
break;
}
case AscCH.historyitem_Protected_SetScenarios: {
protectedSheet.setScenarios(value);
break;
}
case AscCH.historyitem_Protected_SetFormatCells: {
protectedSheet.setFormatCells(value);
break;
}
case AscCH.historyitem_Protected_SetFormatColumns: {
protectedSheet.setFormatColumns(value);
break;
}
case AscCH.historyitem_Protected_SetInsertColumns: {
protectedSheet.setInsertColumns(value);
break;
}
case AscCH.historyitem_Protected_SetInsertRows: {
protectedSheet.setInsertRows(value);
break;
}
case AscCH.historyitem_Protected_SetFormatRows: {
protectedSheet.setFormatRows(value);
break;
}
case AscCH.historyitem_Protected_SetInsertHyperlinks: {
protectedSheet.setInsertHyperlinks(value);
break;
}
case AscCH.historyitem_Protected_SetDeleteRows: {
protectedSheet.setDeleteRows(value);
break;
}
case AscCH.historyitem_Protected_SetDeleteColumns: {
protectedSheet.setDeleteColumns(value);
break;
}
case AscCH.historyitem_Protected_SetSelectLockedCells: {
protectedSheet.setSelectLockedCells(value);
break;
}
case AscCH.historyitem_Protected_SetSort: {
protectedSheet.setSort(value);
break;
}
case AscCH.historyitem_Protected_SetAutoFilter: {
protectedSheet.setAutoFilter(value);
break;
}
case AscCH.historyitem_Protected_SetPivotTables: {
protectedSheet.setPivotTables(value);
break;
}
case AscCH.historyitem_Protected_SetSelectUnlockedCells: {
protectedSheet.setSelectUnlockedCells(value);
break;
}
}
if (bUndo) {
if (oModel.sheetProtection && oModel.sheetProtection.isDefault()) {
oModel.sheetProtection = null;
}
}
this.wb.handlers.trigger("asc_onChangeProtectWorksheet", oModel.index);
}
};
function UndoRedoProtectedWorkbook(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoProtectedWorkbook;
});
}
UndoRedoProtectedWorkbook.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoProtectedWorkbook.prototype.getClassType = function () {
return this.nType;
};
UndoRedoProtectedWorkbook.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoProtectedWorkbook.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoProtectedWorkbook.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var oModel = (null == nSheetId) ? this.wb : this.wb.getWorksheetById(nSheetId);
var api = window["Asc"]["editor"];
if (!api.wb || !oModel) {
return;
}
var protectedWorkbook = oModel.workbookProtection;
if (!protectedWorkbook) {
oModel.workbookProtection = protectedWorkbook = new window["Asc"].CWorkbookProtection();
}
if (protectedWorkbook) {
var value = bUndo ? Data.from : Data.to;
switch (Type) {
case AscCH.historyitem_Protected_SetLockStructure: {
protectedWorkbook.setLockStructure(value);
break;
}
case AscCH.historyitem_Protected_SetLockWindows: {
protectedWorkbook.asc_setLockWindows(value);
break;
}
case AscCH.historyitem_Protected_SetLockRevision: {
protectedWorkbook.asc_setLockRevision(value);
break;
}
case AscCH.historyitem_Protected_SetRevisionsAlgorithmName: {
protectedWorkbook.asc_setRevisionsAlgorithmName(value);
break;
}
case AscCH.historyitem_Protected_SetRevisionsHashValue: {
protectedWorkbook.asc_setRevisionsHashValue(value);
break;
}
case AscCH.historyitem_Protected_SetRevisionsSaltValue: {
protectedWorkbook.asc_setRevisionsSaltValue(value);
break;
}
case AscCH.historyitem_Protected_SetRevisionsSpinCount: {
protectedWorkbook.asc_setRevisionsSpinCount(value);
break;
}
case AscCH.historyitem_Protected_SetWorkbookAlgorithmName: {
protectedWorkbook.asc_setWorkbookAlgorithmName(value);
break;
}
case AscCH.historyitem_Protected_SetWorkbookHashValue: {
protectedWorkbook.asc_setWorkbookHashValue(value);
break;
}
case AscCH.historyitem_Protected_SetWorkbookSaltValue: {
protectedWorkbook.asc_setWorkbookSaltValue(value);
break;
}
case AscCH.historyitem_Protected_SetWorkbookSpinCount: {
protectedWorkbook.asc_setWorkbookSpinCount(value);
break;
}
case AscCH.historyitem_Protected_SetPassword: {
protectedWorkbook.setPasswordXL(value);
break;
}
}
oModel.handlers.trigger("asc_onChangeProtectWorkbook");
}
};
function UndoRedoNamedSheetViews(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoNamedSheetViews;
});
}
UndoRedoNamedSheetViews.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoNamedSheetViews.prototype.getClassType = function () {
return this.nType;
};
UndoRedoNamedSheetViews.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoNamedSheetViews.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoNamedSheetViews.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var ws = this.wb.getWorksheetById(nSheetId);
if (!ws) {
return;
}
var api = window["Asc"]["editor"];
var sheetView;
switch (Type) {
case AscCH.historyitem_NamedSheetView_SetName: {
sheetView = ws.getNamedSheetViewById(Data.sheetView);
if (sheetView) {
sheetView.setName(bUndo ? Data.from : Data.to);
}
break;
}
case AscCH.historyitem_NamedSheetView_DeleteFilter: {
sheetView = ws.getNamedSheetViewById(Data.sheetView);
if (sheetView && bUndo) {
sheetView.nsvFilters.push(Data.from);
}
break;
}
}
};
function UndoRedoUserProtectedRange(wb) {
UndoRedoClassBase.call(this);
this.wb = wb;
this.nType = UndoRedoClassTypes.Add(function () {
return AscCommonExcel.g_oUndoRedoUserProtectedRange;
});
}
UndoRedoUserProtectedRange.prototype = Object.create(UndoRedoClassBase.prototype);
UndoRedoUserProtectedRange.prototype.getClassType = function () {
return this.nType;
};
UndoRedoUserProtectedRange.prototype.Undo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, true);
};
UndoRedoUserProtectedRange.prototype.Redo = function (Type, Data, nSheetId) {
this.UndoRedo(Type, Data, nSheetId, false);
};
UndoRedoUserProtectedRange.prototype.UndoRedo = function (Type, Data, nSheetId, bUndo) {
var wb = this.wb;
var ws = this.wb.getWorksheetById(nSheetId);
if (!ws) {
return;
}
var userProtectedRange = ws.getUserProtectedRangeById(Data.id);
if (!userProtectedRange) {
return;
}
var value = bUndo ? Data.from : Data.to;
switch (Type) {
case AscCH.historyitem_UserProtectedRange_Ref:
var from = null, to = null, temp;
var collaborativeEditing = this.wb.oApi.collaborativeEditing;
if (null != Data.from && null != Data.from.r1 && null != Data.from.c1 && null != Data.from.r2 &&
null != Data.from.c2) {
from = new Asc.Range(Data.from.c1, Data.from.r1, Data.from.c2, Data.from.r2);
if (wb.bCollaborativeChanges) {
from.r1 = collaborativeEditing.getLockOtherRow2(nSheetId, from.r1);
from.c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, from.c1);
from.r2 = collaborativeEditing.getLockOtherRow2(nSheetId, from.r2);
from.c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, from.c2);
}
}
to = null;
if (null != Data.to && null != Data.to.r1 && null != Data.to.c1 && null != Data.to.r2 &&
null != Data.to.c2) {
to = new Asc.Range(Data.to.c1, Data.to.r1, Data.to.c2, Data.to.r2);
if (wb.bCollaborativeChanges) {
to.r1 = collaborativeEditing.getLockOtherRow2(nSheetId, to.r1);
to.c1 = collaborativeEditing.getLockOtherColumn2(nSheetId, to.c1);
to.r2 = collaborativeEditing.getLockOtherRow2(nSheetId, to.r2);
to.c2 = collaborativeEditing.getLockOtherColumn2(nSheetId, to.c2);
}
}
if (bUndo) {
temp = from;
from = to;
to = temp;
}
userProtectedRange.obj.setLocation(to);
break;
}
};
//----------------------------------------------------------export----------------------------------------------------
window['AscCommonExcel'] = window['AscCommonExcel'] || {};
window['AscCommonExcel'].UndoRedoItemSerializable = UndoRedoItemSerializable;
window['AscCommonExcel'].UndoRedoClassTypes = UndoRedoClassTypes;
window['AscCommonExcel'].UndoRedoDataTypes = UndoRedoDataTypes;
window['AscCommonExcel'].UndoRedoData_CellSimpleData = UndoRedoData_CellSimpleData;
window['AscCommonExcel'].UndoRedoData_CellData = UndoRedoData_CellData;
window['AscCommonExcel'].UndoRedoData_CellValueData = UndoRedoData_CellValueData;
window['AscCommonExcel'].UndoRedoData_FromToRowCol = UndoRedoData_FromToRowCol;
window['AscCommonExcel'].UndoRedoData_FromTo = UndoRedoData_FromTo;
window['AscCommonExcel'].UndoRedoData_FromToHyperlink = UndoRedoData_FromToHyperlink;
window['AscCommonExcel'].UndoRedoData_IndexSimpleProp = UndoRedoData_IndexSimpleProp;
window['AscCommonExcel'].UndoRedoData_ColProp = UndoRedoData_ColProp;
window['AscCommonExcel'].UndoRedoData_RowProp = UndoRedoData_RowProp;
window['AscCommonExcel'].UndoRedoData_BBox = UndoRedoData_BBox;
window['AscCommonExcel'].UndoRedoData_FrozenBBox = UndoRedoData_FrozenBBox;
window['AscCommonExcel'].UndoRedoData_SortData = UndoRedoData_SortData;
window['AscCommonExcel'].UndoRedoData_PivotTable = UndoRedoData_PivotTable;
window['AscCommonExcel'].UndoRedoData_PivotCache = UndoRedoData_PivotCache;
window['AscCommonExcel'].UndoRedoData_CacheFields = UndoRedoData_CacheFields;
window['AscCommonExcel'].UndoRedoData_DataField = UndoRedoData_DataField;
window['AscCommonExcel'].UndoRedoData_PivotTableRedo = UndoRedoData_PivotTableRedo;
window['AscCommonExcel'].UndoRedoData_PivotField = UndoRedoData_PivotField;
window['AscCommonExcel'].UndoRedoData_PivotFieldItem = UndoRedoData_PivotFieldItem;
window['AscCommonExcel'].UndoRedoData_Layout = UndoRedoData_Layout;
window['AscCommonExcel'].UndoRedoData_SheetAdd = UndoRedoData_SheetAdd;
window['AscCommonExcel'].UndoRedoData_SheetRemove = UndoRedoData_SheetRemove;
window['AscCommonExcel'].UndoRedoData_DefinedNames = UndoRedoData_DefinedNames;
window['AscCommonExcel'].UndoRedoData_ClrScheme = UndoRedoData_ClrScheme;
window['AscCommonExcel'].UndoRedoData_AutoFilter = UndoRedoData_AutoFilter;
window['AscCommonExcel'].UndoRedoData_SingleProperty = UndoRedoData_SingleProperty;
window['AscCommonExcel'].UndoRedoData_ArrayFormula = UndoRedoData_ArrayFormula;
window['AscCommonExcel'].UndoRedoData_SortState = UndoRedoData_SortState;
window['AscCommonExcel'].UndoRedoData_Slicer = UndoRedoData_Slicer;
window['AscCommonExcel'].UndoRedoData_DataValidation = UndoRedoData_DataValidation;
window['AscCommonExcel'].UndoRedoData_CF = UndoRedoData_CF;
window['AscCommonExcel'].UndoRedoData_ProtectedRange = UndoRedoData_ProtectedRange;
window['AscCommonExcel'].UndoRedoData_UserProtectedRange = UndoRedoData_UserProtectedRange;
window['AscCommonExcel'].UndoRedoData_RowColBreaks = UndoRedoData_RowColBreaks;
window['AscCommonExcel'].UndoRedoData_LegacyDrawingHFDrawing = UndoRedoData_LegacyDrawingHFDrawing;
window['AscCommonExcel'].UndoRedoWorkbook = UndoRedoWorkbook;
window['AscCommonExcel'].UndoRedoCell = UndoRedoCell;
window['AscCommonExcel'].UndoRedoWoorksheet = UndoRedoWoorksheet;
window['AscCommonExcel'].UndoRedoRowCol = UndoRedoRowCol;
window['AscCommonExcel'].UndoRedoComment = UndoRedoComment;
window['AscCommonExcel'].UndoRedoAutoFilters = UndoRedoAutoFilters;
window['AscCommonExcel'].UndoRedoSparklines = UndoRedoSparklines;
window['AscCommonExcel'].UndoRedoSharedFormula = UndoRedoSharedFormula;
window['AscCommonExcel'].UndoRedoRedoLayout = UndoRedoRedoLayout;
window['AscCommonExcel'].UndoRedoArrayFormula = UndoRedoArrayFormula;
window['AscCommonExcel'].UndoRedoHeaderFooter = UndoRedoHeaderFooter;
window['AscCommonExcel'].UndoRedoSortState = UndoRedoSortState;
window['AscCommonExcel'].UndoRedoData_BinaryWrapper = UndoRedoData_BinaryWrapper;
window['AscCommonExcel'].UndoRedoData_BinaryWrapper2 = UndoRedoData_BinaryWrapper2;
window['AscCommonExcel'].UndoRedoPivotTables = UndoRedoPivotTables;
window['AscCommonExcel'].UndoRedoPivotFields = UndoRedoPivotFields;
window['AscCommonExcel'].UndoRedoPivotCache = UndoRedoPivotCache;
window['AscCommonExcel'].UndoRedoCacheFields = UndoRedoCacheFields;
window['AscCommonExcel'].UndoRedoPivotFieldItems = UndoRedoPivotFieldItems;
window['AscCommonExcel'].UndoRedoSlicer = UndoRedoSlicer;
window['AscCommonExcel'].UndoRedoCF = UndoRedoCF;
window['AscCommonExcel'].UndoRedoProtectedRange = UndoRedoProtectedRange;
window['AscCommonExcel'].UndoRedoProtectedSheet = UndoRedoProtectedSheet;
window['AscCommonExcel'].UndoRedoProtectedWorkbook = UndoRedoProtectedWorkbook;
window['AscCommonExcel'].UndoRedoUserProtectedRange = UndoRedoUserProtectedRange;
window['AscCommonExcel'].g_oUndoRedoWorkbook = null;
window['AscCommonExcel'].g_oUndoRedoCell = null;
window['AscCommonExcel'].g_oUndoRedoWorksheet = null;
window['AscCommonExcel'].g_oUndoRedoRow = null;
window['AscCommonExcel'].g_oUndoRedoCol = null;
window['AscCommonExcel'].g_oUndoRedoComment = null;
window['AscCommonExcel'].g_oUndoRedoAutoFilters = null;
window['AscCommonExcel'].g_oUndoRedoSparklines = null;
window['AscCommonExcel'].g_oUndoRedoPivotTables = null;
window['AscCommonExcel'].g_oUndoRedoPivotFields = null;
window['AscCommonExcel'].g_oUndoRedoPivotCache = null;
window['AscCommonExcel'].g_oUndoRedoCacheFields = null;
window['AscCommonExcel'].g_oUndoRedoPivotFieldItems = null;
window['AscCommonExcel'].g_oUndoRedoSharedFormula = null;
window['AscCommonExcel'].g_oUndoRedoLayout = null;
window['AscCommonExcel'].g_UndoRedoArrayFormula = null;
window['AscCommonExcel'].g_oUndoRedoHeaderFooter = null;
window['AscCommonExcel'].g_oUndoRedoSlicer = null;
window['AscCommonExcel'].g_oUndoRedoNamedSheetViews = null;
window['AscCommonExcel'].g_oUndoRedoCF = null;
window['AscCommonExcel'].g_UndoRedoProtectedRange = null;
window['AscCommonExcel'].g_UndoRedoProtectedSheet = null;
window['AscCommonExcel'].g_UndoRedoProtectedWorkbook = null;
window['AscCommonExcel'].UndoRedoNamedSheetViews = UndoRedoNamedSheetViews;
window['AscCommonExcel'].UndoRedoData_NamedSheetView = UndoRedoData_NamedSheetView;
window['AscCommonExcel'].UndoRedoData_NamedSheetViewRedo = UndoRedoData_NamedSheetViewRedo;
})(window);