666 lines
25 KiB
JavaScript
666 lines
25 KiB
JavaScript
/*
|
|
* (c) Copyright Ascensio System SIA 2010-2014
|
|
*
|
|
* 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 Lubanas st. 125a-25, Riga, Latvia,
|
|
* EU, LV-1021.
|
|
*
|
|
* 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
|
|
*
|
|
*/
|
|
var historyitem_Unknown = 0;
|
|
var historyitem_Workbook_SheetAdd = 1;
|
|
var historyitem_Workbook_SheetRemove = 2;
|
|
var historyitem_Workbook_SheetMove = 3;
|
|
var historyitem_Workbook_SheetPositions = 4;
|
|
var historyitem_Workbook_ChangeColorScheme = 5;
|
|
var historyitem_Worksheet_RemoveCell = 1;
|
|
var historyitem_Worksheet_RemoveRows = 2;
|
|
var historyitem_Worksheet_RemoveCols = 3;
|
|
var historyitem_Worksheet_AddRows = 4;
|
|
var historyitem_Worksheet_AddCols = 5;
|
|
var historyitem_Worksheet_ShiftCellsLeft = 6;
|
|
var historyitem_Worksheet_ShiftCellsTop = 7;
|
|
var historyitem_Worksheet_ShiftCellsRight = 8;
|
|
var historyitem_Worksheet_ShiftCellsBottom = 9;
|
|
var historyitem_Worksheet_ColProp = 10;
|
|
var historyitem_Worksheet_RowProp = 11;
|
|
var historyitem_Worksheet_Sort = 12;
|
|
var historyitem_Worksheet_MoveRange = 13;
|
|
var historyitem_Worksheet_Merge = 14;
|
|
var historyitem_Worksheet_Unmerge = 15;
|
|
var historyitem_Worksheet_SetHyperlink = 16;
|
|
var historyitem_Worksheet_RemoveHyperlink = 17;
|
|
var historyitem_Worksheet_Rename = 18;
|
|
var historyitem_Worksheet_Hide = 19;
|
|
var historyitem_Worksheet_CreateRow = 20;
|
|
var historyitem_Worksheet_CreateCol = 21;
|
|
var historyitem_Worksheet_CreateCell = 22;
|
|
var historyitem_Worksheet_SetViewSettings = 23;
|
|
var historyitem_Worksheet_RemoveCellFormula = 24;
|
|
var historyitem_Worksheet_ChangeMerge = 25;
|
|
var historyitem_Worksheet_ChangeHyperlink = 26;
|
|
var historyitem_RowCol_Fontname = 1;
|
|
var historyitem_RowCol_Fontsize = 2;
|
|
var historyitem_RowCol_Fontcolor = 3;
|
|
var historyitem_RowCol_Bold = 4;
|
|
var historyitem_RowCol_Italic = 5;
|
|
var historyitem_RowCol_Underline = 6;
|
|
var historyitem_RowCol_Strikeout = 7;
|
|
var historyitem_RowCol_FontAlign = 8;
|
|
var historyitem_RowCol_AlignVertical = 9;
|
|
var historyitem_RowCol_AlignHorizontal = 10;
|
|
var historyitem_RowCol_Fill = 11;
|
|
var historyitem_RowCol_Border = 12;
|
|
var historyitem_RowCol_ShrinkToFit = 13;
|
|
var historyitem_RowCol_Wrap = 14;
|
|
var historyitem_RowCol_NumFormat = 15;
|
|
var historyitem_RowCol_SetFont = 16;
|
|
var historyitem_RowCol_Angle = 17;
|
|
var historyitem_RowCol_SetStyle = 18;
|
|
var historyitem_RowCol_SetCellStyle = 19;
|
|
var historyitem_Cell_Fontname = 1;
|
|
var historyitem_Cell_Fontsize = 2;
|
|
var historyitem_Cell_Fontcolor = 3;
|
|
var historyitem_Cell_Bold = 4;
|
|
var historyitem_Cell_Italic = 5;
|
|
var historyitem_Cell_Underline = 6;
|
|
var historyitem_Cell_Strikeout = 7;
|
|
var historyitem_Cell_FontAlign = 8;
|
|
var historyitem_Cell_AlignVertical = 9;
|
|
var historyitem_Cell_AlignHorizontal = 10;
|
|
var historyitem_Cell_Fill = 11;
|
|
var historyitem_Cell_Border = 12;
|
|
var historyitem_Cell_ShrinkToFit = 13;
|
|
var historyitem_Cell_Wrap = 14;
|
|
var historyitem_Cell_Numformat = 15;
|
|
var historyitem_Cell_ChangeValue = 16;
|
|
var historyitem_Cell_ChangeArrayValueFormat = 17;
|
|
var historyitem_Cell_SetStyle = 18;
|
|
var historyitem_Cell_SetFont = 19;
|
|
var historyitem_Cell_SetQuotePrefix = 20;
|
|
var historyitem_Cell_Angle = 21;
|
|
var historyitem_Cell_Style = 22;
|
|
var historyitem_Chart_Type = 1;
|
|
var historyitem_Chart_SubType = 2;
|
|
var historyitem_Chart_Style = 3;
|
|
var historyitem_Chart_IsShowValue = 10;
|
|
var historyitem_Chart_IsShowBorder = 11;
|
|
var historyitem_Chart_RangeInterval = 20;
|
|
var historyitem_Chart_RangeRowColumns = 21;
|
|
var historyitem_Chart_HeaderTitle = 30;
|
|
var historyitem_Chart_HeaderSubTitle = 31;
|
|
var historyitem_Chart_IsDefaultHeaderTitle = 32;
|
|
var historyitem_Chart_xAxisTitle = 40;
|
|
var historyitem_Chart_xAxisIsDefaultTitle = 41;
|
|
var historyitem_Chart_xAxisIsShow = 42;
|
|
var historyitem_Chart_xAxisIsGrid = 43;
|
|
var historyitem_Chart_yAxisTitle = 50;
|
|
var historyitem_Chart_yAxisIsDefaultTitle = 51;
|
|
var historyitem_Chart_yAxisIsShow = 52;
|
|
var historyitem_Chart_yAxisIsGrid = 53;
|
|
var historyitem_Chart_LegendPosition = 60;
|
|
var historyitem_Chart_LegendIsShow = 61;
|
|
var historyitem_Chart_LegendIsOverlay = 62;
|
|
var historyitem_AutoShapes_Offset = 1;
|
|
var historyitem_AutoShapes_Extents = 2;
|
|
var historyitem_AutoShapes_Child_Offset = 3;
|
|
var historyitem_AutoShapes_Child_Extents = 4;
|
|
var historyitem_AutoShapes_Rotate = 5;
|
|
var historyitem_AutoShapes_Flips = 6;
|
|
var historyitem_AutoShapes_SetGuideValue = 7;
|
|
var historyitem_AutoShapes_RecalculateTransformUndo = 8;
|
|
var historyitem_AutoShapes_RecalculateTransformRedo = 9;
|
|
var historyitem_AutoShapes_Add_Adjustment = 10;
|
|
var historyitem_AutoShapes_Add_Guide = 11;
|
|
var historyitem_AutoShapes_Add_Cnx = 12;
|
|
var historyitem_AutoShapes_Add_Handle_XY = 13;
|
|
var historyitem_AutoShapes_Add_Handle_Polar = 14;
|
|
var historyitem_AutoShapes_Add_Path_Command = 15;
|
|
var historyitem_AutoShapes_Add_Path = 16;
|
|
var historyitem_AutoShapes_Add_GeometryRect = 17;
|
|
var historyitem_AutoShapes_Add_PathMoveTo = 18;
|
|
var historyitem_AutoShapes_Add_PathLineTo = 19;
|
|
var historyitem_AutoShapes_Add_PathArcTo = 20;
|
|
var historyitem_AutoShapes_Add_PathQuadBezTo = 21;
|
|
var historyitem_AutoShapes_Add_PathCubicBezTo = 22;
|
|
var historyitem_AutoShapes_Add_PathClose = 23;
|
|
var historyitem_AutoShapes_RecalculateGeometry_Undo = 24;
|
|
var historyitem_AutoShapes_RecalculateGeometry_Redo = 25;
|
|
var historyitem_AutoShapes_Add_To_Drawing_Objects = 26;
|
|
var historyitem_AutoShapes_Layout_Set_X_Mode = 27;
|
|
var historyitem_AutoShapes_Layout_Set_Y_Mode = 28;
|
|
var historyitem_AutoShapes_Layout_Set_X = 29;
|
|
var historyitem_AutoShapes_Layout_Set_Y = 30;
|
|
var historyitem_AutoShapes_SetDrawingObjects = 31;
|
|
var historyitem_AutoShapes_SetGroup = 32;
|
|
var historyitem_AutoShapes_SetPresetGeometry = 33;
|
|
var historyitem_AutoShapes_SetDefaultStyle = 34;
|
|
var historyitem_AutoShapes_RecalculateAfterInit = 35;
|
|
var historyitem_AutoShapes_SetXfrm = 36;
|
|
var historyitem_AutoShapes_AddTextBody = 37;
|
|
var historyitem_AutoShapes_AddDocContent = 38;
|
|
var historyitem_AutoShapes_AddDrawingDocument = 39;
|
|
var historyitem_AutoShapes_AddParent = 40;
|
|
var historyitem_AutoShapes_AddParagraph = 41;
|
|
var historyitem_AutoShapes_SetShape = 42;
|
|
var historyitem_AutoShapes_SetTextPr = 43;
|
|
var historyitem_AutoShapes_SetDefaultTextRectStyle = 44;
|
|
var historyitem_AutoShapes_SetFill = 45;
|
|
var historyitem_AutoShapes_SetFType = 46;
|
|
var historyitem_AutoShapes_SetFgColor = 47;
|
|
var historyitem_AutoShapes_SetBgColor = 48;
|
|
var historyitem_AutoShapes_SetUniFill = 49;
|
|
var historyitem_AutoShapes_SetUniLine = 50;
|
|
var historyitem_AutoShapes_SetLineWidth = 51;
|
|
var historyitem_AutoShapes_RecalculateAfterParagraphAddRedo = 52;
|
|
var historyitem_AutoShapes_RecalculateAfterParagraphAddUndo = 53;
|
|
var historyitem_AutoShapes_SetTransparent = 54;
|
|
var historyitem_AutoShapes_RecalculateBrushRedo = 55;
|
|
var historyitem_AutoShapes_RecalculateBrushUndo = 56;
|
|
var historyitem_AutoShapes_AddToSpTree = 57;
|
|
var historyitem_AutoShapes_DeleteDrawingBase = 58;
|
|
var historyitem_AutoShapes_VerticalAlign = 59;
|
|
var historyitem_AutoShapes_Vert = 60;
|
|
var historyitem_AutoShapes_GroupRecalculateUndo = 61;
|
|
var historyitem_AutoShapes_GroupRecalculateRedo = 62;
|
|
var historyitem_AutoShapes_AddColorMod = 63;
|
|
var historyitem_AutoShapes_RemoveFromSpTree = 64;
|
|
var historyitem_AutoShapes_SwapGraphicObjects = 65;
|
|
var historyitem_AutoShapes_TopInset = 66;
|
|
var historyitem_AutoShapes_RightInset = 67;
|
|
var historyitem_AutoShapes_LeftInset = 68;
|
|
var historyitem_AutoShapes_BottomInset = 69;
|
|
var historyitem_AutoShapes_Set_AutoShapeStyle = 70;
|
|
var historyitem_AutoShapes_Set_ImageBlipFill = 71;
|
|
var historyitem_AutoShapes_Set_AscChart = 72;
|
|
var historyitem_AutoShapes_Set_PathStroke = 73;
|
|
var historyitem_AutoShapes_Set_PathFill = 74;
|
|
var historyitem_AutoShapes_Set_PathWH = 75;
|
|
var historyitem_AutoShapes_SetTailEnd = 76;
|
|
var historyitem_AutoShapes_SetHeadEnd = 77;
|
|
var historyitem_AutoShapes_AddTitle = 78;
|
|
var historyitem_AutoShapes_AddXAxis = 79;
|
|
var historyitem_AutoShapes_AddYAxis = 80;
|
|
var historyitem_AutoShapes_AddChartGroup = 81;
|
|
var historyitem_AutoShapes_SetChartTitleLayout = 82;
|
|
var historyitem_AutoShapes_SetChartOverlay = 83;
|
|
var historyitem_AutoShapes_InitChart = 84;
|
|
var historyitem_AutoShapes_SetChartTitleType = 85;
|
|
var historyitem_AutoShapes_OnContentRecalculateUndo = 86;
|
|
var historyitem_AutoShapes_OnContentRecalculateRedo = 87;
|
|
var historyitem_AutoShapes_GeometryAddPreset = 88;
|
|
var historyitem_AutoShapes_AddToGroupSpTreeToPos = 89;
|
|
var historyitem_AutoShapes_GroupRecalculateArrGraphicObjectsUndo = 90;
|
|
var historyitem_AutoShapes_GroupRecalculateArrGraphicObjectsRedo = 91;
|
|
var historyitem_AutoShapes_RecalculateAfterInit2Chart = 92;
|
|
var historyitem_AutoShapes_GroupRecalculateAfterLoad = 93;
|
|
var historyitem_Comment_Add = 1;
|
|
var historyitem_Comment_Remove = 2;
|
|
var historyitem_Comment_Change = 3;
|
|
var historyitem_AutoFilter_Add = 1;
|
|
var historyitem_AutoFilter_Sort = 2;
|
|
var historyitem_AutoFilter_Empty = 3;
|
|
var historyitem_AutoFilter_ApplyDF = 4;
|
|
var historyitem_AutoFilter_ApplyMF = 5;
|
|
var historyitem_AutoFilter_Move = 6;
|
|
var historyitem_DocumentContent_AddItem = 1;
|
|
var historyitem_DocumentContent_RemoveItem = 2;
|
|
var historyitem_TextPr_Change = 1;
|
|
var historyitem_TextPr_Bold = 2;
|
|
var historyitem_TextPr_Italic = 3;
|
|
var historyitem_TextPr_Strikeout = 4;
|
|
var historyitem_TextPr_Underline = 5;
|
|
var historyitem_TextPr_FontFamily = 6;
|
|
var historyitem_TextPr_FontSize = 7;
|
|
var historyitem_TextPr_Color = 8;
|
|
var historyitem_TextPr_VertAlign = 9;
|
|
var historyitem_TextPr_HighLight = 10;
|
|
var historyitem_TextPr_RStyle = 11;
|
|
var historyitem_TextPr_Spacing = 12;
|
|
var historyitem_TextPr_DStrikeout = 13;
|
|
var historyitem_TextPr_Caps = 14;
|
|
var historyitem_TextPr_SmallCaps = 15;
|
|
var historyitem_TextPr_Position = 16;
|
|
var historyitem_TextPr_Value = 17;
|
|
var historyitem_TextPr_RFonts = 18;
|
|
var historyitem_TextPr_Lang = 19;
|
|
var historyitem_TextPr_ThemeFont = 20;
|
|
var historyitem_TextPr_UniFill = 21;
|
|
var historyitem_Paragraph_AddItem = 1;
|
|
var historyitem_Paragraph_RemoveItem = 2;
|
|
var historyitem_Paragraph_Numbering = 3;
|
|
var historyitem_Paragraph_Align = 4;
|
|
var historyitem_Paragraph_Ind_First = 5;
|
|
var historyitem_Paragraph_Ind_Right = 6;
|
|
var historyitem_Paragraph_Ind_Left = 7;
|
|
var historyitem_Paragraph_ContextualSpacing = 8;
|
|
var historyitem_Paragraph_KeepLines = 9;
|
|
var historyitem_Paragraph_KeepNext = 10;
|
|
var historyitem_Paragraph_PageBreakBefore = 11;
|
|
var historyitem_Paragraph_Spacing_Line = 12;
|
|
var historyitem_Paragraph_Spacing_LineRule = 13;
|
|
var historyitem_Paragraph_Spacing_Before = 14;
|
|
var historyitem_Paragraph_Spacing_After = 15;
|
|
var historyitem_Paragraph_Spacing_AfterAutoSpacing = 16;
|
|
var historyitem_Paragraph_Spacing_BeforeAutoSpacing = 17;
|
|
var historyitem_Paragraph_Shd_Value = 18;
|
|
var historyitem_Paragraph_Shd_Color = 19;
|
|
var historyitem_Paragraph_WidowControl = 20;
|
|
var historyitem_Paragraph_Tabs = 21;
|
|
var historyitem_Paragraph_PStyle = 22;
|
|
var historyitem_Paragraph_DocNext = 23;
|
|
var historyitem_Paragraph_DocPrev = 24;
|
|
var historyitem_Paragraph_Parent = 25;
|
|
var historyitem_Paragraph_Borders_Between = 26;
|
|
var historyitem_Paragraph_Borders_Bottom = 27;
|
|
var historyitem_Paragraph_Borders_Left = 28;
|
|
var historyitem_Paragraph_Borders_Right = 29;
|
|
var historyitem_Paragraph_Borders_Top = 30;
|
|
var historyitem_Paragraph_Pr = 31;
|
|
var historyitem_Paragraph_PresentationPr_Bullet = 32;
|
|
var historyitem_Paragraph_PresentationPr_Level = 33;
|
|
var historyitem_Paragraph_Recalculate_Text_Pr = 34;
|
|
var historyitem_TableId_Add = 1;
|
|
var historyitem_TableId_Reset = 2;
|
|
function CHistory(workbook) {
|
|
this.workbook = workbook;
|
|
this.Index = -1;
|
|
this.SavePoint = null;
|
|
this.Points = new Array();
|
|
this.CurPoint = null;
|
|
this.IsModify = false;
|
|
this.TurnOffHistory = 0;
|
|
this.Transaction = 0;
|
|
}
|
|
CHistory.prototype = {
|
|
Clear: function () {
|
|
this.Index = -1;
|
|
this.SavePoint = null;
|
|
this.Points.length = 0;
|
|
this.CurPoint = null;
|
|
this.IsModify = false;
|
|
this.TurnOffHistory = 0;
|
|
this.Transaction = 0;
|
|
this._sendCanUndoRedo();
|
|
},
|
|
Can_Undo: function () {
|
|
if ((null != this.CurPoint && this.CurPoint.Items.length > 0) || this.Index >= 0) {
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
Can_Redo: function () {
|
|
if ((null == this.CurPoint || 0 == this.CurPoint.Items.length) && this.Points.length > 0 && this.Index < this.Points.length - 1) {
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
Undo: function () {
|
|
if (true != this.Can_Undo()) {
|
|
return null;
|
|
}
|
|
var bIsOn = false;
|
|
if (this.Index === this.Points.length - 1) {
|
|
this.LastState = this.workbook.handlers.trigger("getSelectionState");
|
|
}
|
|
this._checkCurPoint();
|
|
var Point = this.Points[this.Index--];
|
|
if (this.Is_On()) {
|
|
bIsOn = true;
|
|
this.TurnOff();
|
|
}
|
|
lockDraw(this.workbook);
|
|
this.workbook.handlers.trigger("lockDraw");
|
|
this.workbook.bUndoChanges = true;
|
|
var isReInit = false;
|
|
var isRedrawAll = true;
|
|
var oCurWorksheet = this.workbook.getWorksheet(this.workbook.getActive());
|
|
if (null != Point.nLastSheetId && Point.nLastSheetId != oCurWorksheet.getId()) {
|
|
this.workbook.handlers.trigger("showWorksheet", Point.nLastSheetId);
|
|
}
|
|
for (var Index = Point.Items.length - 1; Index >= 0; Index--) {
|
|
var Item = Point.Items[Index];
|
|
Item.Class.Undo(Item.Type, Item.Data, Item.SheetId);
|
|
if (g_oUndoRedoWorksheet === Item.Class && historyitem_Worksheet_SetViewSettings === Item.Type) {
|
|
isReInit = true;
|
|
}
|
|
if (g_oUndoRedoGraphicObjects === Item.Class) {
|
|
isRedrawAll = false;
|
|
}
|
|
}
|
|
gUndoInsDelCellsFlag = true;
|
|
var oSelectRange = null;
|
|
if (null != Point.SelectRange) {
|
|
oSelectRange = Point.SelectRange;
|
|
}
|
|
for (var i in Point.UpdateRigions) {
|
|
this.workbook.handlers.trigger("cleanCellCache", i, Point.UpdateRigions[i]);
|
|
if (null != Point.nLastSheetId && i - 0 == Point.nLastSheetId && null == oSelectRange) {
|
|
oSelectRange = Point.UpdateRigions[i];
|
|
}
|
|
}
|
|
if (false == Point.bNoSelect && null != oSelectRange) {
|
|
this.workbook.handlers.trigger("setSelection", oSelectRange.clone(), false);
|
|
}
|
|
if (Point.SelectionState != null) {
|
|
this.workbook.handlers.trigger("setSelectionState", Point.SelectionState);
|
|
}
|
|
this._sendCanUndoRedo();
|
|
this.workbook.bUndoChanges = false;
|
|
if (isReInit) {
|
|
this.workbook.handlers.trigger("reInit");
|
|
}
|
|
if (isRedrawAll) {
|
|
this.workbook.handlers.trigger("drawWS");
|
|
} else {
|
|
this.workbook.handlers.trigger("showDrawingObjects", true);
|
|
}
|
|
if (isRealObject(this.lastDrawingObjects)) {
|
|
this.lastDrawingObjects.sendGraphicObjectProps();
|
|
this.lastDrawingObjects = null;
|
|
}
|
|
buildRecalc(this.workbook);
|
|
unLockDraw(this.workbook);
|
|
if (bIsOn) {
|
|
this.TurnOn();
|
|
}
|
|
},
|
|
RedoPrepare: function (oRedoObjectParam) {
|
|
if (this.Is_On()) {
|
|
oRedoObjectParam.bIsOn = true;
|
|
this.TurnOff();
|
|
}
|
|
lockDraw(this.workbook);
|
|
this.workbook.handlers.trigger("lockDraw");
|
|
this.workbook.bRedoChanges = true;
|
|
},
|
|
RedoAdd: function (oRedoObjectParam, Class, Type, sheetid, range, Data, LocalChange) {
|
|
var bNeedOff = false;
|
|
if (false == this.Is_On()) {
|
|
this.TurnOn();
|
|
bNeedOff = true;
|
|
}
|
|
this.Add(Class, Type, sheetid, range, Data, LocalChange);
|
|
if (bNeedOff) {
|
|
this.TurnOff();
|
|
}
|
|
Class.Redo(Type, Data, sheetid);
|
|
if (g_oUndoRedoWorksheet === Class && historyitem_Worksheet_SetViewSettings === Type) {
|
|
oRedoObjectParam.bIsReInit = true;
|
|
}
|
|
},
|
|
RedoExecute: function (Point, oRedoObjectParam) {
|
|
for (var Index = 0; Index < Point.Items.length; Index++) {
|
|
var Item = Point.Items[Index];
|
|
Item.Class.Redo(Item.Type, Item.Data, Item.SheetId);
|
|
if (g_oUndoRedoWorksheet === Item.Class && historyitem_Worksheet_SetViewSettings === Item.Type) {
|
|
oRedoObjectParam.bIsReInit = true;
|
|
}
|
|
}
|
|
var State = null;
|
|
if (this.Index === this.Points.length - 1) {
|
|
State = this.LastState;
|
|
} else {
|
|
State = this.Points[this.Index + 1].SelectionState;
|
|
}
|
|
if (isRealObject(State)) {
|
|
this.workbook.handlers.trigger("setSelectionState", State);
|
|
}
|
|
if (isRealObject(this.lastDrawingObjects)) {
|
|
this.lastDrawingObjects.sendGraphicObjectProps();
|
|
this.lastDrawingObjects = null;
|
|
}
|
|
},
|
|
RedoEnd: function (Point, oRedoObjectParam) {
|
|
if (null == Point) {
|
|
this._checkCurPoint();
|
|
Point = this.Points[this.Index];
|
|
}
|
|
if (null == Point) {
|
|
return;
|
|
}
|
|
var oSelectRange = null;
|
|
if (null != Point.SelectRangeRedo) {
|
|
oSelectRange = Point.SelectRangeRedo;
|
|
} else {
|
|
if (null != Point.SelectRange) {
|
|
oSelectRange = Point.SelectRange;
|
|
}
|
|
}
|
|
for (var i in Point.UpdateRigions) {
|
|
this.workbook.handlers.trigger("cleanCellCache", i, Point.UpdateRigions[i]);
|
|
if (null != Point.nLastSheetId && i - 0 == Point.nLastSheetId && null == oSelectRange) {
|
|
oSelectRange = Point.UpdateRigions[i];
|
|
}
|
|
}
|
|
if (false == Point.bNoSelect && null != oSelectRange) {
|
|
this.workbook.handlers.trigger("setSelection", oSelectRange.clone());
|
|
}
|
|
this._sendCanUndoRedo();
|
|
this.workbook.bRedoChanges = false;
|
|
if (oRedoObjectParam.bIsReInit) {
|
|
this.workbook.handlers.trigger("reInit");
|
|
}
|
|
this.workbook.handlers.trigger("drawWS");
|
|
buildRecalc(this.workbook);
|
|
unLockDraw(this.workbook);
|
|
if (oRedoObjectParam.bIsOn) {
|
|
this.TurnOn();
|
|
}
|
|
},
|
|
Redo: function () {
|
|
if (true != this.Can_Redo()) {
|
|
return null;
|
|
}
|
|
var oRedoObjectParam = new Asc.RedoObjectParam();
|
|
this.RedoPrepare(oRedoObjectParam);
|
|
this.CurPoint = null;
|
|
var Point = this.Points[++this.Index];
|
|
var oCurWorksheet = this.workbook.getWorksheet(this.workbook.getActive());
|
|
if (null != Point.nLastSheetId && Point.nLastSheetId != oCurWorksheet.getId()) {
|
|
this.workbook.handlers.trigger("showWorksheet", Point.nLastSheetId);
|
|
}
|
|
this.RedoExecute(Point, oRedoObjectParam);
|
|
this.RedoEnd(Point, oRedoObjectParam);
|
|
},
|
|
Create_NewPoint: function () {
|
|
if (0 !== this.TurnOffHistory || 0 !== this.Transaction) {
|
|
return;
|
|
}
|
|
this._checkCurPoint();
|
|
var Items = new Array();
|
|
var UpdateRigions = new Object();
|
|
var Time = new Date().getTime();
|
|
this.CurPoint = {
|
|
Items: Items,
|
|
UpdateRigions: UpdateRigions,
|
|
nLastSheetId: null,
|
|
SelectRange: null,
|
|
SelectRangeRedo: null,
|
|
bNoSelect: false,
|
|
Time: Time,
|
|
SelectionState: this.workbook.handlers.trigger("getSelectionState")
|
|
};
|
|
},
|
|
Add: function (Class, Type, sheetid, range, Data, LocalChange) {
|
|
if (0 !== this.TurnOffHistory) {
|
|
return;
|
|
}
|
|
if (null == this.CurPoint) {
|
|
return;
|
|
}
|
|
var oCurPoint = this.CurPoint;
|
|
var Item = {
|
|
Class: Class,
|
|
Type: Type,
|
|
SheetId: sheetid,
|
|
Range: null,
|
|
Data: Data,
|
|
LocalChange: false
|
|
};
|
|
if (null != range) {
|
|
Item.Range = range.clone();
|
|
}
|
|
if (null != LocalChange) {
|
|
Item.LocalChange = LocalChange;
|
|
}
|
|
oCurPoint.Items.push(Item);
|
|
if (null != range) {
|
|
var updateRange = oCurPoint.UpdateRigions[sheetid];
|
|
if (null != updateRange) {
|
|
updateRange.union2(range);
|
|
} else {
|
|
updateRange = range.clone();
|
|
}
|
|
oCurPoint.UpdateRigions[sheetid] = updateRange;
|
|
}
|
|
oCurPoint.nLastSheetId = sheetid;
|
|
if (1 == oCurPoint.Items.length) {
|
|
this._sendCanUndoRedo();
|
|
}
|
|
},
|
|
_sendCanUndoRedo: function () {
|
|
this.workbook.handlers.trigger("setCanUndo", this.Can_Undo());
|
|
this.workbook.handlers.trigger("setCanRedo", this.Can_Redo());
|
|
if (this.IsModify != this.Is_Modified()) {
|
|
this.IsModify = !this.IsModify;
|
|
this.workbook.handlers.trigger("setDocumentModified", this.IsModify);
|
|
}
|
|
},
|
|
_checkCurPoint: function () {
|
|
if (null != this.CurPoint && this.CurPoint.Items.length > 0) {
|
|
this.Points[++this.Index] = this.CurPoint;
|
|
this.Points.length = this.Index + 1;
|
|
this.CurPoint = null;
|
|
}
|
|
},
|
|
SetSelection: function (range, bNoSelect) {
|
|
if (0 !== this.TurnOffHistory || 0 !== this.Transaction) {
|
|
return;
|
|
}
|
|
if (null == this.CurPoint) {
|
|
return;
|
|
}
|
|
this.CurPoint.SelectRange = range;
|
|
if (null != bNoSelect) {
|
|
this.CurPoint.bNoSelect = bNoSelect;
|
|
}
|
|
},
|
|
SetSelectionRedo: function (range, bNoSelect) {
|
|
if (0 !== this.TurnOffHistory || 0 !== this.Transaction) {
|
|
return;
|
|
}
|
|
if (null == this.CurPoint) {
|
|
return;
|
|
}
|
|
this.CurPoint.SelectRangeRedo = range;
|
|
if (null != bNoSelect) {
|
|
this.CurPoint.bNoSelect = bNoSelect;
|
|
}
|
|
},
|
|
TurnOff: function () {
|
|
this.TurnOffHistory++;
|
|
},
|
|
TurnOn: function () {
|
|
this.TurnOffHistory--;
|
|
if (this.TurnOffHistory < 0) {
|
|
this.TurnOffHistory = 0;
|
|
}
|
|
},
|
|
StartTransaction: function () {
|
|
this.Transaction++;
|
|
},
|
|
EndTransaction: function () {
|
|
this.Transaction--;
|
|
if (this.Transaction < 0) {
|
|
this.Transaction = 0;
|
|
}
|
|
},
|
|
Is_On: function () {
|
|
return (0 === this.TurnOffHistory ? true : false);
|
|
},
|
|
Save: function () {
|
|
if (null != this.CurPoint && this.CurPoint.Items.length > 0) {
|
|
this.SavePoint = this.CurPoint;
|
|
} else {
|
|
if (this.Index >= 0 && this.Index < this.Points.length) {
|
|
this.SavePoint = this.Points[this.Index];
|
|
}
|
|
}
|
|
if (true == this.IsModify) {
|
|
this.IsModify = !this.IsModify;
|
|
this.workbook.handlers.trigger("setDocumentModified", this.IsModify);
|
|
}
|
|
},
|
|
Is_Modified: function () {
|
|
if (null != this.CurPoint && this.CurPoint.Items.length > 0) {
|
|
if (null != this.SavePoint) {
|
|
return this.CurPoint != this.SavePoint;
|
|
} else {
|
|
return true;
|
|
}
|
|
} else {
|
|
if (this.Index >= 0 && this.Index < this.Points.length) {
|
|
if (null != this.SavePoint) {
|
|
return this.Points[this.Index] != this.SavePoint;
|
|
} else {
|
|
return true;
|
|
}
|
|
} else {
|
|
if (null != this.SavePoint) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
GetSerializeArray: function () {
|
|
var aRes = new Array();
|
|
for (var i = 0; i <= this.Index; ++i) {
|
|
var point = this.Points[i];
|
|
for (var j = 0, length2 = point.Items.length; j < length2; ++j) {
|
|
var elem = point.Items[j];
|
|
if (true != elem.LocalChange) {
|
|
aRes.push(new UndoRedoItemSerializable(elem.Class, elem.Type, elem.SheetId, elem.Range, elem.Data));
|
|
}
|
|
}
|
|
}
|
|
if (null != this.CurPoint) {
|
|
for (var j = 0, length2 = this.CurPoint.Items.length; j < length2; ++j) {
|
|
var elem = this.CurPoint.Items[j];
|
|
if (true != elem.LocalChange) {
|
|
aRes.push(new UndoRedoItemSerializable(elem.Class, elem.Type, elem.SheetId, elem.Range, elem.Data));
|
|
}
|
|
}
|
|
}
|
|
return aRes;
|
|
},
|
|
ChangeActionsEndToStart: function () {
|
|
if (null != this.CurPoint && this.CurPoint.Items.length > 0) {
|
|
var endAction = this.CurPoint.Items.pop();
|
|
this.CurPoint.Items.unshift(endAction);
|
|
}
|
|
}
|
|
}; |