Files
DocumentServer-v-9.2.0/sdkjs/cell/model/History.js
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

1748 lines
63 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* (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) {
//------------------------------------------------------------export--------------------------------------------------
window['AscCH'] = window['AscCH'] || {};
window['AscCH'].historyitem_Unknown = 0;
window['AscCH'].historyitem_Workbook_SheetAdd = 1;
window['AscCH'].historyitem_Workbook_SheetRemove = 2;
window['AscCH'].historyitem_Workbook_ChangeColorScheme = 5;
window['AscCH'].historyitem_Workbook_DefinedNamesChange = 7;
window['AscCH'].historyitem_Workbook_DefinedNamesChangeUndo = 8;
window['AscCH'].historyitem_Workbook_Calculate = 9;
window['AscCH'].historyitem_Workbook_PivotWorksheetSource = 10;
window['AscCH'].historyitem_Workbook_Date1904 = 11;
window['AscCH'].historyitem_Workbook_ChangeExternalReference = 12;
window['AscCH'].historyitem_Workbook_TimelineCacheDelete = 13;
window['AscCH'].historyitem_Workbook_CalcPr_iterate = 14;
window['AscCH'].historyitem_Workbook_CalcPr_iterateCount = 15;
window['AscCH'].historyitem_Workbook_CalcPr_iterateDelta = 16;
window['AscCH'].historyitem_Workbook_UpdateLinks = 17;
window['AscCH'].historyitem_Workbook_ShowVerticalScroll = 18;
window['AscCH'].historyitem_Workbook_ShowHorizontalScroll = 19;
window['AscCH'].historyitem_Workbook_SetCustomFunctions = 20;
window['AscCH'].historyitem_Worksheet_RemoveCell = 1;
window['AscCH'].historyitem_Worksheet_RemoveRows = 2;
window['AscCH'].historyitem_Worksheet_RemoveCols = 3;
window['AscCH'].historyitem_Worksheet_AddRows = 4;
window['AscCH'].historyitem_Worksheet_AddCols = 5;
window['AscCH'].historyitem_Worksheet_ShiftCellsLeft = 6;
window['AscCH'].historyitem_Worksheet_ShiftCellsTop = 7;
window['AscCH'].historyitem_Worksheet_ShiftCellsRight = 8;
window['AscCH'].historyitem_Worksheet_ShiftCellsBottom = 9;
window['AscCH'].historyitem_Worksheet_ColProp = 10;
window['AscCH'].historyitem_Worksheet_RowProp = 11;
window['AscCH'].historyitem_Worksheet_Sort = 12;
window['AscCH'].historyitem_Worksheet_MoveRange = 13;
window['AscCH'].historyitem_Worksheet_Rename = 18;
window['AscCH'].historyitem_Worksheet_Hide = 19;
window['AscCH'].historyitem_Worksheet_Null = 20;
window['AscCH'].historyitem_Worksheet_ChangeMerge = 25;
window['AscCH'].historyitem_Worksheet_ChangeHyperlink = 26;
window['AscCH'].historyitem_Worksheet_SetTabColor = 27;
window['AscCH'].historyitem_Worksheet_RowHide = 28;
window['AscCH'].historyitem_Worksheet_SetRightToLeft = 29;
// Frozen cell
window['AscCH'].historyitem_Worksheet_ChangeFrozenCell = 30;
window['AscCH'].historyitem_Worksheet_SetDisplayGridlines = 31;
window['AscCH'].historyitem_Worksheet_SetDisplayHeadings = 32;
window['AscCH'].historyitem_Worksheet_GroupRow = 33;
window['AscCH'].historyitem_Worksheet_CollapsedRow = 34;
window['AscCH'].historyitem_Worksheet_CollapsedCol = 35;
window['AscCH'].historyitem_Worksheet_GroupCol = 36;
window['AscCH'].historyitem_Worksheet_SetSummaryRight = 37;
window['AscCH'].historyitem_Worksheet_SetSummaryBelow = 38;
window['AscCH'].historyitem_Worksheet_SetFitToPage = 39;
window['AscCH'].historyitem_Worksheet_PivotAdd = 40;
window['AscCH'].historyitem_Worksheet_PivotDelete = 41;
window['AscCH'].historyitem_Worksheet_PivotReplace = 42;
window['AscCH'].historyitem_Worksheet_SlicerAdd = 43;
window['AscCH'].historyitem_Worksheet_SlicerDelete = 44;
window['AscCH'].historyitem_Worksheet_SetActiveNamedSheetView = 45;
window['AscCH'].historyitem_Worksheet_SheetViewAdd = 46;
window['AscCH'].historyitem_Worksheet_SheetViewDelete = 47;
window['AscCH'].historyitem_Worksheet_DataValidationAdd = 48;
window['AscCH'].historyitem_Worksheet_DataValidationChange = 49;
window['AscCH'].historyitem_Worksheet_DataValidationDelete = 50;
window['AscCH'].historyitem_Worksheet_PivotReplaceKeepRecords = 51;
window['AscCH'].historyitem_Worksheet_CFRuleAdd = 52;
window['AscCH'].historyitem_Worksheet_CFRuleDelete = 53;
window['AscCH'].historyitem_Worksheet_SetShowZeros = 54;
window['AscCH'].historyitem_Worksheet_SetTopLeftCell = 55;
window['AscCH'].historyitem_Worksheet_AddProtectedRange = 56;
window['AscCH'].historyitem_Worksheet_DelProtectedRange = 57;
window['AscCH'].historyitem_Worksheet_AddCellWatch = 58;
window['AscCH'].historyitem_Worksheet_DelCellWatch = 59;
window['AscCH'].historyitem_Worksheet_ChangeUserProtectedRange = 60;
window['AscCH'].historyitem_Worksheet_SetSheetViewType = 61;
window['AscCH'].historyitem_Worksheet_SetShowFormulas = 62;
window['AscCH'].historyitem_Worksheet_ChangeRowColBreaks = 63;
window['AscCH'].historyitem_Worksheet_ChangeLegacyDrawingHFDrawing = 64;
window['AscCH'].historyitem_Worksheet_TimelineDelete = 65;
window['AscCH'].historyitem_RowCol_Fontname = 1;
window['AscCH'].historyitem_RowCol_Fontsize = 2;
window['AscCH'].historyitem_RowCol_Fontcolor = 3;
window['AscCH'].historyitem_RowCol_Bold = 4;
window['AscCH'].historyitem_RowCol_Italic = 5;
window['AscCH'].historyitem_RowCol_Underline = 6;
window['AscCH'].historyitem_RowCol_Strikeout = 7;
window['AscCH'].historyitem_RowCol_FontAlign = 8;
window['AscCH'].historyitem_RowCol_AlignVertical = 9;
window['AscCH'].historyitem_RowCol_AlignHorizontal = 10;
window['AscCH'].historyitem_RowCol_Fill = 11;
window['AscCH'].historyitem_RowCol_Border = 12;
window['AscCH'].historyitem_RowCol_ShrinkToFit = 13;
window['AscCH'].historyitem_RowCol_Wrap = 14;
window['AscCH'].historyitem_RowCol_SetFont = 16;
window['AscCH'].historyitem_RowCol_Angle = 17;
window['AscCH'].historyitem_RowCol_SetStyle = 18;
window['AscCH'].historyitem_RowCol_SetCellStyle = 19;
window['AscCH'].historyitem_RowCol_Num = 20;
window['AscCH'].historyitem_RowCol_Indent = 21;
window['AscCH'].historyitem_RowCol_ApplyProtection = 22;
window['AscCH'].historyitem_RowCol_Locked = 23;
window['AscCH'].historyitem_RowCol_HiddenFormulas = 24;
window['AscCH'].historyitem_RowCol_ReadingOrder = 25;
window['AscCH'].historyitem_Cell_Fontname = 1;
window['AscCH'].historyitem_Cell_Fontsize = 2;
window['AscCH'].historyitem_Cell_Fontcolor = 3;
window['AscCH'].historyitem_Cell_Bold = 4;
window['AscCH'].historyitem_Cell_Italic = 5;
window['AscCH'].historyitem_Cell_Underline = 6;
window['AscCH'].historyitem_Cell_Strikeout = 7;
window['AscCH'].historyitem_Cell_FontAlign = 8;
window['AscCH'].historyitem_Cell_AlignVertical = 9;
window['AscCH'].historyitem_Cell_AlignHorizontal = 10;
window['AscCH'].historyitem_Cell_Fill = 11;
window['AscCH'].historyitem_Cell_Border = 12;
window['AscCH'].historyitem_Cell_ShrinkToFit = 13;
window['AscCH'].historyitem_Cell_Wrap = 14;
window['AscCH'].historyitem_Cell_ChangeValue = 16;
window['AscCH'].historyitem_Cell_ChangeArrayValueFormat = 17;
window['AscCH'].historyitem_Cell_SetStyle = 18;
window['AscCH'].historyitem_Cell_SetFont = 19;
window['AscCH'].historyitem_Cell_SetQuotePrefix = 20;
window['AscCH'].historyitem_Cell_Angle = 21;
window['AscCH'].historyitem_Cell_Style = 22;
window['AscCH'].historyitem_Cell_ChangeValueUndo = 23;
window['AscCH'].historyitem_Cell_Num = 24;
window['AscCH'].historyitem_Cell_SetPivotButton = 25;
window['AscCH'].historyitem_Cell_RemoveSharedFormula = 26;
window['AscCH'].historyitem_Cell_Indent = 27;
window['AscCH'].historyitem_Cell_SetApplyProtection = 28;
window['AscCH'].historyitem_Cell_SetHidden = 29;
window['AscCH'].historyitem_Cell_SetLocked = 30;
window['AscCH'].historyitem_Cell_ReadingOrder = 31;
window['AscCH'].historyitem_Comment_Add = 1;
window['AscCH'].historyitem_Comment_Remove = 2;
window['AscCH'].historyitem_Comment_Change = 3;
window['AscCH'].historyitem_Comment_Coords = 4;
window['AscCH'].historyitem_AutoFilter_Add = 1;
window['AscCH'].historyitem_AutoFilter_Sort = 2;
window['AscCH'].historyitem_AutoFilter_Empty = 3;
window['AscCH'].historyitem_AutoFilter_Apply = 5;
window['AscCH'].historyitem_AutoFilter_Move = 6;
window['AscCH'].historyitem_AutoFilter_CleanAutoFilter = 7;
window['AscCH'].historyitem_AutoFilter_Delete = 8;
window['AscCH'].historyitem_AutoFilter_ChangeTableStyle = 9;
window['AscCH'].historyitem_AutoFilter_Change = 10;
window['AscCH'].historyitem_AutoFilter_ChangeTableInfo = 12;
window['AscCH'].historyitem_AutoFilter_ChangeTableRef = 13;
window['AscCH'].historyitem_AutoFilter_ChangeTableName = 14;
window['AscCH'].historyitem_AutoFilter_ClearFilterColumn = 15;
window['AscCH'].historyitem_AutoFilter_ChangeColumnName = 16;
window['AscCH'].historyitem_AutoFilter_ChangeTotalRow = 17;
window['AscCH'].historyitem_PivotTable_StyleName = 1;
window['AscCH'].historyitem_PivotTable_StyleShowRowHeaders = 2;
window['AscCH'].historyitem_PivotTable_StyleShowColHeaders = 3;
window['AscCH'].historyitem_PivotTable_StyleShowRowStripes = 4;
window['AscCH'].historyitem_PivotTable_StyleShowColStripes = 5;
window['AscCH'].historyitem_PivotTable_SetName = 6;
window['AscCH'].historyitem_PivotTable_SetRowGrandTotals = 7;
window['AscCH'].historyitem_PivotTable_SetColGrandTotals = 8;
window['AscCH'].historyitem_PivotTable_SetPageOverThenDown = 9;
window['AscCH'].historyitem_PivotTable_SetPageWrap = 10;
window['AscCH'].historyitem_PivotTable_SetShowHeaders = 11;
window['AscCH'].historyitem_PivotTable_SetCompact = 12;
window['AscCH'].historyitem_PivotTable_SetOutline = 13;
window['AscCH'].historyitem_PivotTable_SetFillDownLabelsDefault = 14;
window['AscCH'].historyitem_PivotTable_SetDataOnRows = 15;
window['AscCH'].historyitem_PivotTable_SetAltText = 16;
window['AscCH'].historyitem_PivotTable_SetAltTextSummary = 17;
window['AscCH'].historyitem_PivotTable_AddPageField = 18;
window['AscCH'].historyitem_PivotTable_AddRowField = 19;
window['AscCH'].historyitem_PivotTable_AddColField = 20;
window['AscCH'].historyitem_PivotTable_AddDataField = 21;
window['AscCH'].historyitem_PivotTable_RemovePageField = 22;
window['AscCH'].historyitem_PivotTable_RemoveRowField = 23;
window['AscCH'].historyitem_PivotTable_RemoveColField = 24;
window['AscCH'].historyitem_PivotTable_RemoveDataField = 25;
window['AscCH'].historyitem_PivotTable_MovePageField = 26;
window['AscCH'].historyitem_PivotTable_MoveRowField = 27;
window['AscCH'].historyitem_PivotTable_MoveColField = 28;
window['AscCH'].historyitem_PivotTable_MoveDataField = 29;
window['AscCH'].historyitem_PivotTable_PivotFieldSetName = 30;
window['AscCH'].historyitem_PivotTable_PivotFieldSetOutline = 31;
window['AscCH'].historyitem_PivotTable_PivotFieldSetCompact = 32;
window['AscCH'].historyitem_PivotTable_PivotFieldFillDownLabelsDefault = 33;
window['AscCH'].historyitem_PivotTable_PivotFieldSetInsertBlankRow = 34;
window['AscCH'].historyitem_PivotTable_PivotFieldSetDefaultSubtotal = 35;
window['AscCH'].historyitem_PivotTable_PivotFieldSetSubtotalTop = 36;
window['AscCH'].historyitem_PivotTable_PivotFieldSetShowAll = 37;
window['AscCH'].historyitem_PivotTable_PivotFieldSetSubtotals = 38;
window['AscCH'].historyitem_PivotTable_DataFieldSetName = 39;
window['AscCH'].historyitem_PivotTable_DataFieldSetSubtotal = 40;
window['AscCH'].historyitem_PivotTable_RowItems = 41;
window['AscCH'].historyitem_PivotTable_ColItems = 42;
window['AscCH'].historyitem_PivotTable_Location = 43;
window['AscCH'].historyitem_PivotTable_SetDataPosition = 44;
window['AscCH'].historyitem_PivotTable_CacheField = 45;
window['AscCH'].historyitem_PivotTable_PivotField = 46;
window['AscCH'].historyitem_PivotTable_PivotFilter = 47;
window['AscCH'].historyitem_PivotTable_PivotFilterDataField = 48;
window['AscCH'].historyitem_PivotTable_PivotFilterMeasureFld = 49;
window['AscCH'].historyitem_PivotTable_PageFilter = 50;
window['AscCH'].historyitem_PivotTable_SetGridDropZones = 51;
window['AscCH'].historyitem_PivotTable_WorksheetSource = 52;
window['AscCH'].historyitem_PivotTable_PivotCacheId = 53;
window['AscCH'].historyitem_PivotTable_PivotFieldVisible = 54;
window['AscCH'].historyitem_PivotTable_UseAutoFormatting = 55;
window['AscCH'].historyitem_PivotTable_HideValuesRow = 56;
window['AscCH'].historyitem_PivotTable_DataFieldSetShowDataAs = 57;
window['AscCH'].historyitem_PivotTable_DataFieldSetBaseField = 58;
window['AscCH'].historyitem_PivotTable_DataFieldSetBaseItem = 59;
window['AscCH'].historyitem_PivotTable_DataFieldSetNumFormat = 60;
window['AscCH'].historyitem_PivotTable_PivotFieldSetNumFormat = 61;
window['AscCH'].historyitem_PivotTable_FormatsReindex = 62;
window['AscCH'].historyitem_PivotTable_FormatsRemoveField = 63;
window['AscCH'].historyitem_PivotTable_FormatsAddRowField = 64;
window['AscCH'].historyitem_PivotTable_FormatsAddColField = 65;
window['AscCH'].historyitem_PivotTable_SetGrandTotalCaption = 66;
window['AscCH'].historyitem_PivotTable_PivotFieldSetSubtotalCaption = 67;
window['AscCH'].historyitem_PivotTable_SetRowHeaderCaption = 68;
window['AscCH'].historyitem_PivotTable_SetColHeaderCaption = 69;
window['AscCH'].historyitem_PivotTable_SetDataCaption = 70;
window['AscCH'].historyitem_PivotTable_PivotFieldItemSetName = 71;
window['AscCH'].historyitem_PivotTable_PivotFieldMoveItem = 72;
window['AscCH'].historyitem_PivotCache_SetCalculatedItems = 1;
window['AscCH'].historyitem_PivotCacheFields_SetCacheField = 1;
window['AscCH'].historyitem_SharedFormula_ChangeFormula = 1;
window['AscCH'].historyitem_SharedFormula_ChangeShared = 2;
window['AscCH'].historyitem_Layout_Left = 1;
window['AscCH'].historyitem_Layout_Right = 2;
window['AscCH'].historyitem_Layout_Top = 3;
window['AscCH'].historyitem_Layout_Bottom = 4;
window['AscCH'].historyitem_Layout_Width = 5;
window['AscCH'].historyitem_Layout_Height = 6;
window['AscCH'].historyitem_Layout_FitToWidth = 7;
window['AscCH'].historyitem_Layout_FitToHeight = 8;
window['AscCH'].historyitem_Layout_GridLines = 9;
window['AscCH'].historyitem_Layout_Headings = 10;
window['AscCH'].historyitem_Layout_Orientation = 11;
window['AscCH'].historyitem_Layout_Scale = 12;
window['AscCH'].historyitem_Layout_FirstPageNumber = 13;
window['AscCH'].historyitem_Layout_HorizontalCentered = 14;
window['AscCH'].historyitem_Layout_VerticalCentered = 15;
window['AscCH'].historyitem_ArrayFromula_AddFormula = 1;
window['AscCH'].historyitem_ArrayFromula_DeleteFormula = 2;
window['AscCH'].historyitem_Header_First = 1;
window['AscCH'].historyitem_Header_Even = 2;
window['AscCH'].historyitem_Header_Odd = 3;
window['AscCH'].historyitem_Footer_First = 4;
window['AscCH'].historyitem_Footer_Even = 5;
window['AscCH'].historyitem_Footer_Odd = 6;
window['AscCH'].historyitem_Align_With_Margins = 7;
window['AscCH'].historyitem_Scale_With_Doc = 8;
window['AscCH'].historyitem_Different_First = 9;
window['AscCH'].historyitem_Different_Odd_Even = 10;
window['AscCH'].historyitem_SortState_Add = 1;
window['AscCH'].historyitem_Slicer_SetCaption = 1;
window['AscCH'].historyitem_Slicer_SetCacheSourceName = 2;
window['AscCH'].historyitem_Slicer_SetTableColName = 3;
window['AscCH'].historyitem_Slicer_SetTableName = 4;
window['AscCH'].historyitem_Slicer_SetCacheName = 5;
window['AscCH'].historyitem_Slicer_SetName = 6;
window['AscCH'].historyitem_Slicer_SetStartItem = 7;
window['AscCH'].historyitem_Slicer_SetColumnCount = 8;
window['AscCH'].historyitem_Slicer_SetShowCaption = 9;
window['AscCH'].historyitem_Slicer_SetLevel = 10;
window['AscCH'].historyitem_Slicer_SetStyle = 11;
window['AscCH'].historyitem_Slicer_SetLockedPosition = 12;
window['AscCH'].historyitem_Slicer_SetRowHeight = 13;
window['AscCH'].historyitem_Slicer_SetCacheSortOrder = 14;
window['AscCH'].historyitem_Slicer_SetCacheCustomListSort = 15;
window['AscCH'].historyitem_Slicer_SetCacheCrossFilter = 16;
window['AscCH'].historyitem_Slicer_SetCacheHideItemsWithNoData = 17;
window['AscCH'].historyitem_Slicer_SetCacheData = 18;
window['AscCH'].historyitem_Slicer_SetCacheMovePivot = 19;
window['AscCH'].historyitem_Slicer_SetCacheCopySheet = 20;
window['AscCH'].historyitem_NamedSheetView_SetName = 1;
window['AscCH'].historyitem_NamedSheetView_DeleteFilter = 2;
window['AscCH'].historyitem_CFRule_SetAboveAverage = 1;
window['AscCH'].historyitem_CFRule_SetActivePresent = 2;
window['AscCH'].historyitem_CFRule_SetBottom = 3;
window['AscCH'].historyitem_CFRule_SetEqualAverage = 4;
window['AscCH'].historyitem_CFRule_SetOperator = 5;
window['AscCH'].historyitem_CFRule_SetPercent = 6;
window['AscCH'].historyitem_CFRule_SetPriority = 7;
window['AscCH'].historyitem_CFRule_SetRank = 8;
window['AscCH'].historyitem_CFRule_SetStdDev = 9;
window['AscCH'].historyitem_CFRule_SetStopIfTrue = 10;
window['AscCH'].historyitem_CFRule_SetText = 11;
window['AscCH'].historyitem_CFRule_SetTimePeriod = 12;
window['AscCH'].historyitem_CFRule_SetType = 13;
window['AscCH'].historyitem_CFRule_SetPivot = 14;
window['AscCH'].historyitem_CFRule_SetTimePeriod = 15;
window['AscCH'].historyitem_CFRule_SetRuleElements = 16;
window['AscCH'].historyitem_CFRule_SetDxf = 17;
window['AscCH'].historyitem_CFRule_SetRanges = 18;
window['AscCH'].historyitem_Protected_SetSqref = 1;
window['AscCH'].historyitem_Protected_SetName = 2;
window['AscCH'].historyitem_Protected_SetAlgorithmName = 3;
window['AscCH'].historyitem_Protected_SetHashValue = 4;
window['AscCH'].historyitem_Protected_SetSaltValue = 5;
window['AscCH'].historyitem_Protected_SetSpinCount = 6;
window['AscCH'].historyitem_Protected_SetSheet = 7;
window['AscCH'].historyitem_Protected_SetObjects = 8;
window['AscCH'].historyitem_Protected_SetScenarios = 9;
window['AscCH'].historyitem_Protected_SetFormatCells = 10;
window['AscCH'].historyitem_Protected_SetFormatColumns = 11;
window['AscCH'].historyitem_Protected_SetFormatRows = 12;
window['AscCH'].historyitem_Protected_SetInsertColumns = 13;
window['AscCH'].historyitem_Protected_SetInsertRows = 14;
window['AscCH'].historyitem_Protected_SetInsertHyperlinks = 15;
window['AscCH'].historyitem_Protected_SetDeleteColumns = 16;
window['AscCH'].historyitem_Protected_SetDeleteRows = 17;
window['AscCH'].historyitem_Protected_SetSelectLockedCells = 18;
window['AscCH'].historyitem_Protected_SetSort = 19;
window['AscCH'].historyitem_Protected_SetAutoFilter = 20;
window['AscCH'].historyitem_Protected_SetPivotTables = 21;
window['AscCH'].historyitem_Protected_SetSelectUnlockedCells = 22;
window['AscCH'].historyitem_Protected_SetLockStructure = 23;
window['AscCH'].historyitem_Protected_SetLockWindows = 24;
window['AscCH'].historyitem_Protected_SetLockRevision = 25;
window['AscCH'].historyitem_Protected_SetRevisionsAlgorithmName = 26;
window['AscCH'].historyitem_Protected_SetRevisionsHashValue = 27;
window['AscCH'].historyitem_Protected_SetRevisionsSaltValue = 28;
window['AscCH'].historyitem_Protected_SetRevisionsSpinCount = 29;
window['AscCH'].historyitem_Protected_SetWorkbookAlgorithmName = 30;
window['AscCH'].historyitem_Protected_SetWorkbookHashValue = 31;
window['AscCH'].historyitem_Protected_SetWorkbookSaltValue = 32;
window['AscCH'].historyitem_Protected_SetWorkbookSpinCount = 33;
window['AscCH'].historyitem_Protected_SetPassword = 34;
window['AscCH'].historyitem_UserProtectedRange_Ref = 1;
let CHistoryWord = AscCommon.CHistory;
function CHistory(Document)
{
CHistoryWord.call(this, Document);
this.Index = -1;
this.SavedIndex = null; // Номер точки отката, на которой произошло последнее сохранение
this.ForceSave = false; // Нужно сохранение, случается, когда у нас точка SavedIndex смещается из-за объединения точек, и мы делаем Undo
this.RecIndex = -1;
this.Points = [];
this.workbook = Document;
this.Document = this.workbook;
this.Api = null;
this.CollaborativeEditing = null;
this.CanNotAddChanges = false;//флаг для отслеживания ошибок добавления изменений без точки:Create_NewPoint->Add->Save_Changes->Add
//this.CollectChanges = false;
//this.UndoRedoInProgress = false; //
// this.RecalculateData = {
// Inline : {
// Pos : -1,
// PageNum : 0
// },
// Flow : [],
// HdrFtr : [],
// Drawings : {
// All : false,
// Map : {},
// ThemeInfo : null,
// SlideMinIdx : null
// },
// Tables : [],
// NumPr : [],
// NotesEnd : false,
// NotesEndPage : 0,
// LineNumbers : false,
// Update : true
// };
this.TurnOffHistory = 0;
this.RegisterClasses = 0;
//this.MinorChanges = false; // Данный параметр нужен, чтобы определить влияют ли добавленные изменения на пересчет
this.BinaryWriter = this.memory = new AscCommon.CMemory();
// this.FileCheckSum = 0;
// this.FileSize = 0;
// Параметры для специального сохранения для локальной версии редактора
this.UserSaveMode = false;
this.UserSavedIndex = null; // Номер точки, на которой произошло последнее сохранение пользователем (не автосохранение)
this.StoredData = [];
this.LastState = null;
//todo remove all below
this.Transaction = 0;
this.LocalChange = false;//если true все добавленный изменения не пойдут в совместное редактирование.
this.lastDrawingObjects = null;
this.PosInCurPoint = null; // position to roll back changes within the current point
this.oRedoObjectParam = null;
}
CHistory.prototype = Object.create(CHistoryWord.prototype);
CHistory.prototype.init = function(workbook) {
this.workbook = workbook;
};
CHistory.prototype.Set_LogicDocument = function(LogicDocument) {
if (!LogicDocument)
return;
this.workbook = this.Document = LogicDocument;
this.Api = LogicDocument.Get_Api();
this.CollaborativeEditing = LogicDocument.Get_CollaborativeEditing();
};
CHistory.prototype.Is_UserSaveMode = function() {
return this.UserSaveMode;
};
CHistory.prototype.Is_Clear = function() {
if ( this.Points.length <= 0 )
return true;
return false;
};
CHistory.prototype.Clear = function()
{
var _isClear = this.Is_Clear();
this.Index = -1;
this.Points.length = 0;
this.TurnOffHistory = 0;
this.Transaction = 0;
this.SavedIndex = null;
this.ForceSave= false;
this.UserSavedIndex = null;
window['AscCommon'].g_specialPasteHelper.SpecialPasteButton_Hide();
this.workbook.handlers.trigger("toggleAutoCorrectOptions", null, true);
//this.workbook.handlers.trigger("cleanCutData");
this._sendCanUndoRedo();
};
/** @returns {boolean} */
CHistory.prototype.Can_Undo = function()
{
return this.Index >= 0;
};
/** @returns {boolean} */
CHistory.prototype.Can_Redo = function()
{
return this.Points.length > 0 && this.Index < this.Points.length - 1;
};
/** @returns {boolean} */
CHistory.prototype.Undo = function(Options)
{
// Проверяем можно ли сделать Undo
if (true !== this.Can_Undo()) {
return false;
}
if (this.Index === this.Points.length - 1)
this.LastState = this.workbook.handlers.trigger("getSelectionState");
var oRedoObjectParam = this.oRedoObjectParam = new AscCommonExcel.RedoObjectParam();
this.UndoRedoPrepare(oRedoObjectParam, true);
// Откатываем все действия в обратном порядке (относительно их выполенения)
var Point = null;
if (undefined !== Options && null !== Options && true === Options.All)
{
while (this.Index >= 0)
{
Point = this.Points[this.Index--];
this.private_UndoPoint(Point, oRedoObjectParam);
}
}
else
{
Point = this.Points[this.Index--];
this.private_UndoPoint(Point, oRedoObjectParam);
}
this.UndoRedoEnd(Point, oRedoObjectParam, true);
return true;
};
CHistory.prototype.private_UndoPoint = function(Point, oRedoObjectParam) {
for ( var Index = Point.Items.length - 1; Index >= 0; Index-- )
{
var Item = Point.Items[Index];
if(!Item.Class.RefreshRecalcData)
Item.Class.Undo( Item.Type, Item.Data, Item.SheetId );
else
{
if (Item.Class)
{
Item.Class.Undo();
Item.Class.RefreshRecalcData();
}
}
this._addRedoObjectParam(oRedoObjectParam, Item);
}
}
CHistory.prototype.UndoRedoPrepare = function (oRedoObjectParam, bUndo, bKeepTurn) {
if (this.Is_On() && !bKeepTurn) {
oRedoObjectParam.bIsOn = true;
this.TurnOff();
}
/* отключаем отрисовку на случай необходимости пересчета ячеек, заносим ячейку, при необходимости в список перерисовываемых */
this.workbook.dependencyFormulas.lockRecal();
if (bUndo)
this.workbook.bUndoChanges = true;
else
this.workbook.bRedoChanges = true;
if (!window["NATIVE_EDITOR_ENJINE"]) {
if(Asc["editor"].wb) {
var wsViews = Asc["editor"].wb.wsViews;
for (var i = 0; i < wsViews.length; ++i) {
if (wsViews[i]) {
if (wsViews[i].objectRender && wsViews[i].objectRender.controller) {
wsViews[i].objectRender.controller.resetSelection(undefined, true);
}
wsViews[i].endEditChart();
}
}
}
}
if (window["NATIVE_EDITOR_ENJINE"] || !this.workbook.oApi.isDocumentLoadComplete) {
oRedoObjectParam.bChangeActive = true;
}
};
CHistory.prototype.RedoAdd = function(oRedoObjectParam, Class, Type, sheetid, range, Data, LocalChange, undoRedoItemSerializable)
{
//todo сделать что-нибудь с Is_On
var bNeedOff = false;
if(false == this.Is_On())
{
this.TurnOn();
bNeedOff = true;
}
var curPoint = this.Points[this.Index];
//if(Class)
this.Add(Class, Type, sheetid, range, Data, LocalChange, true);
if(bNeedOff)
this.TurnOff();
var bChangeActive = oRedoObjectParam.bChangeActive && (AscCommonExcel.g_oUndoRedoWorkbook === Class || (AscCommonExcel.g_oUndoRedoWorksheet === Class && AscCH.historyitem_Worksheet_Hide === Type));
if (bChangeActive && null != oRedoObjectParam.activeSheet) {
//it can be delete action, so set active and get after action
this.workbook.setActiveById(oRedoObjectParam.activeSheet);
}
// ToDo Убрать это!!!
if(Class && !Class.Load) {
Class.Redo( Type, Data, sheetid );
}
else
{
if(Class && Data && !Data.isDrawingCollaborativeData){
Class.Redo(Data);
}
else
{
if(!Class){
if(Data.isDrawingCollaborativeData){
Data.oBinaryReader.Seek2(Data.nPos);
var nChangesType = Data.oBinaryReader.GetLong();
var changedObject = AscCommon.g_oTableId.Get_ById(Data.sChangedObjectId);
if(changedObject){
var fChangesClass = AscDFH.changesFactory[nChangesType];
if (fChangesClass){
let color = null;
if (AscCommon.CollaborativeEditing.isCollaboration())
color = new CDocumentColor(255, 255, 255);
var oChange = new fChangesClass(changedObject);
oChange.ReadFromBinary(Data.oBinaryReader);
oChange.Load(color);
if (curPoint) {
curPoint.Items[curPoint.Items.length - 1].Class = oChange;
undoRedoItemSerializable.oClass = oChange;
}
}
}
}
}
}
}
if (curPoint) {
this._addRedoObjectParam(oRedoObjectParam, curPoint.Items[curPoint.Items.length - 1]);
}
if (bChangeActive) {
oRedoObjectParam.activeSheet = this.workbook.getActiveWs().getId();
}
};
CHistory.prototype.Remove_LastPoint = function()
{
if (this.Index > -1)
{
this.Index--;
this.Points.length = this.Index + 1;
}
};
CHistory.prototype.RemoveLastPoint = function()
{
this.Remove_LastPoint();
};
CHistory.prototype.Clear_Redo = function()
{
// Удаляем ненужные точки
this.Points.length = this.Index + 1;
};
CHistory.prototype.RedoExecuteItem = function(Item, oRedoObjectParam, isLoad)
{
if(!Item.Class.RefreshRecalcData)
Item.Class.Redo( Item.Type, Item.Data, Item.SheetId );
else
{
if (isLoad) {
Item.Class.Load();
} else {
Item.Class.Redo();
}
Item.Class.RefreshRecalcData();
}
this._addRedoObjectParam(oRedoObjectParam, Item);
}
CHistory.prototype.RedoExecute = function(Point, oRedoObjectParam)
{
// Выполняем все действия в прямом порядке
for ( var Index = 0; Index < Point.Items.length; Index++ )
{
var Item = Point.Items[Index];
this.RedoExecuteItem(Item, oRedoObjectParam);
}
AscCommon.CollaborativeEditing.Apply_LinkData();
};
CHistory.prototype.UndoRedoEnd = function (Point, oRedoObjectParam, bUndo) {
var wsViews, i, oState = null, bCoaut = false, t = this;
AscCommonExcel.executeInR1C1Mode(false, function () {
AscCommonExcel.lockCustomFunctionRecalculate(true, function () {
t.workbook.dependencyFormulas.unlockRecal();
});
});
if (!bUndo && null == Point) {
Point = this.Points[this.Index];
AscCommon.CollaborativeEditing.Apply_LinkData();
bCoaut = true;
if(!AscCommon.isFileBuild()) {
Asc["editor"].wb.recalculateDrawingObjects(Point, true);
}
}
if (null != Point) {
if (oRedoObjectParam.bChangeColorScheme) {
t.workbook.rebuildColors();
t.workbook.oApi.asc_AfterChangeColorScheme();
}
//синхронизация index и id worksheet
if (oRedoObjectParam.bUpdateWorksheetByModel)
this.workbook.handlers.trigger("updateWorksheetByModel");
//important after updateWorksheetByModel
t.workbook.oApi.updatePivotTables();
for (i in oRedoObjectParam.onSlicerCache) {
const slicers = t.workbook.getSlicersByCacheName(i);
if (slicers) {
for (let i = 0; i < slicers.length; i++) {
oRedoObjectParam.onSlicer[slicers[i].name] = true;
}
}
}
for (i in oRedoObjectParam.onSlicer) {
this.workbook.onSlicerUpdate(i);
}
if (!AscCommon.isRealObject(Point.SelectionState)) {
Point.SelectionState = null;
}
if(!bCoaut)
{
oState = bUndo ? Point.SelectionState : ((this.Index === this.Points.length - 1) ?
this.LastState : this.Points[this.Index + 1].SelectionState);
if (!AscCommon.isRealObject(oState)) {
oState = null;
}
}
if (this.workbook.bCollaborativeChanges) {
//active может поменяться только при remove, hide листов
var ws = this.workbook.getActiveWs();
this.workbook.handlers.trigger('showWorksheet', ws.getId());
}
else {
// ToDo какое-то не очень решение брать 0-й элемент и у него получать индекс!
var nSheetId = (null !== oState) ? oState[0].worksheetId : ((this.workbook.bRedoChanges && null != Point.RedoSheetId) ? Point.RedoSheetId : Point.UndoSheetId);
if (null !== nSheetId)
this.workbook.handlers.trigger('showWorksheet', nSheetId);
}
//changeWorksheetUpdate before cleanCellCache to call _calcHeightRows
for (i in oRedoObjectParam.oChangeWorksheetUpdate)
this.workbook.handlers.trigger("changeWorksheetUpdate",
oRedoObjectParam.oChangeWorksheetUpdate[i],{lockDraw: true, reinitRanges: true});
for (i in Point.UpdateRigions) {
//последним параметром передаю resetCache, при добавлении/удаление строк/столбцов в случая прямого действия
//всегда делается cache -> reset, здесь аналогично делаю
this.workbook.handlers.trigger("cleanCellCache", i, [Point.UpdateRigions[i]], null, oRedoObjectParam.bAddRemoveRowCol);
var curSheet = this.workbook.getWorksheetById(i);
if (curSheet)
this.workbook.getWorksheetById(i).updateSlicersByRange(Point.UpdateRigions[i]);
//this.workbook.oApi.onWorksheetChange(Point.UpdateRigions[i]);
}
// So far, the event call has been removed when undo/redo, since UpdateRigions does not always have the right range and you need to pick it up from another place
// if (Point.SelectRange) {
// this.workbook.oApi.onWorksheetChange(Point.SelectRange);
// }
// if (Point.SelectRangeRedo && (!Point.SelectRange || (Point.SelectRange && !Point.SelectRange.isEqual(Point.SelectRangeRedo)))) {
// this.workbook.oApi.onWorksheetChange(Point.SelectRangeRedo);
// }
if (oRedoObjectParam.bOnSheetsChanged)
this.workbook.handlers.trigger("asc_onSheetsChanged");
for (i in oRedoObjectParam.oOnUpdateTabColor) {
var curSheet = this.workbook.getWorksheetById(i);
if (curSheet)
this.workbook.handlers.trigger("asc_onUpdateTabColor", curSheet.getIndex());
}
if(!AscCommon.isFileBuild()) {
Asc["editor"].wb.recalculateDrawingObjects(Point, false);
}
for (i in oRedoObjectParam.UpdateRigions) {
this.workbook.handlers.trigger("cleanCellCache", i, [oRedoObjectParam.UpdateRigions[i]], null, oRedoObjectParam.bAddRemoveRowCol);
var curSheet = this.workbook.getWorksheetById(i);
if (curSheet)
this.workbook.getWorksheetById(i).updateSlicersByRange(oRedoObjectParam.UpdateRigions[i]);
//this.workbook.oApi.onWorksheetChange(Point.UpdateRigions[i]);
}
if (oRedoObjectParam.oOnUpdateSheetViewSettings[this.workbook.getWorksheet(this.workbook.getActive()).getId()])
this.workbook.handlers.trigger("asc_onUpdateSheetViewSettings");
this.workbook.handlers.trigger("updateCellWatches");
this._sendCanUndoRedo();
if (bUndo)
this.workbook.bUndoChanges = false;
else
this.workbook.bRedoChanges = false;
//TODO вызывать только в случае, если были изменения строк/столбцов и отдельно для строк и столбцов
this.workbook.handlers.trigger("updateGroupData");
this.workbook.handlers.trigger("drawWS");
if (bUndo) {
if (Point.SelectionState) {
this.workbook.handlers.trigger("setSelectionState", Point.SelectionState);
} else {
this.workbook.handlers.trigger("setSelection", Point.SelectRange.clone());
}
} else {
if (null !== oState && oState[0] && oState[0].focus) {
this.workbook.handlers.trigger("setSelectionState", oState);
} else {
var oSelectRange = null;
if (null != Point.SelectRangeRedo)
oSelectRange = Point.SelectRangeRedo;
else if (null != Point.SelectRange)
oSelectRange = Point.SelectRange;
if (null != oSelectRange)
this.workbook.handlers.trigger("setSelection", oSelectRange.clone());
}
}
if (bUndo) {
if (AscCommon.isRealObject(this.lastDrawingObjects)) {
this.lastDrawingObjects.sendGraphicObjectProps();
this.lastDrawingObjects = null;
}
}
if (oRedoObjectParam.bChangeActive && null != oRedoObjectParam.activeSheet) {
this.workbook.setActiveById(oRedoObjectParam.activeSheet);
this.workbook.handlers.trigger("updateWorksheetByModel");
}
}
if(!window["NATIVE_EDITOR_ENJINE"])
{
var wsView = window["Asc"]["editor"].wb.getWorksheet();
if(wsView && wsView.objectRender && wsView.objectRender.controller)
{
wsView.objectRender.controller.updateOverlay();
wsView.objectRender.controller.updateSelectionState();
}
}
if (oRedoObjectParam && oRedoObjectParam.bIsOn)
this.TurnOn();
if (!bUndo) {
this.workbook.handlers.trigger("updatePrintPreview");
}
window['AscCommon'].g_specialPasteHelper.SpecialPasteButton_Hide();
this.workbook.handlers.trigger("toggleAutoCorrectOptions", null, true);
//this.workbook.handlers.trigger("cleanCutData");
};
CHistory.prototype.Redo = function()
{
// Проверяем можно ли сделать Redo
if ( true != this.Can_Redo() )
return;
var oRedoObjectParam = new AscCommonExcel.RedoObjectParam();
this.UndoRedoPrepare(oRedoObjectParam, false);
var Point = this.Points[++this.Index];
this.RedoExecute(Point, oRedoObjectParam);
this.UndoRedoEnd(Point, oRedoObjectParam, false);
};
CHistory.prototype._addRedoObjectParam = function (oRedoObjectParam, Point) {
if (AscCommonExcel.g_oUndoRedoWorksheet === Point.Class &&
(AscCH.historyitem_Worksheet_SetDisplayGridlines === Point.Type ||
AscCH.historyitem_Worksheet_SetDisplayHeadings === Point.Type)) {
oRedoObjectParam.oOnUpdateSheetViewSettings[Point.SheetId] = Point.SheetId;
}
else if (AscCommonExcel.g_oUndoRedoWorksheet === Point.Class && (AscCH.historyitem_Worksheet_RowProp === Point.Type || AscCH.historyitem_Worksheet_ColProp === Point.Type || AscCH.historyitem_Worksheet_RowHide === Point.Type || AscCH.historyitem_Worksheet_AddCols === Point.Type || AscCH.historyitem_Worksheet_RemoveCols === Point.Type))
oRedoObjectParam.oChangeWorksheetUpdate[Point.SheetId] = Point.SheetId;
else if (AscCommonExcel.g_oUndoRedoWorkbook === Point.Class && (AscCH.historyitem_Workbook_SheetAdd === Point.Type || AscCH.historyitem_Workbook_SheetRemove === Point.Type)) {
oRedoObjectParam.bUpdateWorksheetByModel = true;
oRedoObjectParam.bOnSheetsChanged = true;
}
else if (AscCommonExcel.g_oUndoRedoWorksheet === Point.Class && (AscCH.historyitem_Worksheet_Rename === Point.Type || AscCH.historyitem_Worksheet_Hide === Point.Type))
oRedoObjectParam.bOnSheetsChanged = true;
else if (AscCommonExcel.g_oUndoRedoWorksheet === Point.Class && AscCH.historyitem_Worksheet_SetTabColor === Point.Type)
oRedoObjectParam.oOnUpdateTabColor[Point.SheetId] = Point.SheetId;
else if (AscCommonExcel.g_oUndoRedoWorksheet === Point.Class && AscCH.historyitem_Worksheet_ChangeFrozenCell === Point.Type)
oRedoObjectParam.oOnUpdateSheetViewSettings[Point.SheetId] = Point.SheetId;
else if (AscCommonExcel.g_oUndoRedoWorksheet === Point.Class && (AscCH.historyitem_Worksheet_RemoveRows === Point.Type || AscCH.historyitem_Worksheet_RemoveCols === Point.Type || AscCH.historyitem_Worksheet_AddRows === Point.Type || AscCH.historyitem_Worksheet_AddCols === Point.Type))
oRedoObjectParam.bAddRemoveRowCol = true;
else if(AscCommonExcel.g_oUndoRedoAutoFilters === Point.Class && AscCH.historyitem_AutoFilter_ChangeTableInfo === Point.Type)
oRedoObjectParam.oChangeWorksheetUpdate[Point.SheetId] = Point.SheetId;
else if(AscCommonExcel.g_oUndoRedoWorkbook === Point.Class && AscCH.historyitem_Workbook_ChangeColorScheme === Point.Type)
oRedoObjectParam.bChangeColorScheme = true;
else if(AscCommonExcel.g_oUndoRedoSlicer === Point.Class) {
const cacheChange = AscCH.historyitem_Slicer_SetCacheSortOrder === Point.Type ||
AscCH.historyitem_Slicer_SetCacheCustomListSort === Point.Type ||
AscCH.historyitem_Slicer_SetCacheCrossFilter === Point.Type ||
AscCH.historyitem_Slicer_SetCacheHideItemsWithNoData === Point.Type ||
AscCH.historyitem_Slicer_SetCacheData === Point.Type ||
AscCH.historyitem_Slicer_SetCacheMovePivot === Point.Type ||
AscCH.historyitem_Slicer_SetCacheCopySheet === Point.Type;
if (cacheChange) {
oRedoObjectParam.onSlicerCache[Point.Data.name] = true;
} else {
oRedoObjectParam.onSlicer[Point.Data.name] = true;
}
}
if (null != Point.SheetId) {
oRedoObjectParam.activeSheet = Point.SheetId;
}
};
CHistory.prototype.Get_RecalcData = function(Point2)
{
//if ( this.Index >= 0 )
{
//for ( var Pos = this.RecIndex + 1; Pos <= this.Index; Pos++ )
{
// Считываем изменения, начиная с последней точки, и смотрим что надо пересчитать.
var Point;
if(Point2)
{
Point = Point2;
}
else
{
Point = this.Points[this.Index];
}
if(Point)
{
// Выполняем все действия в прямом порядке
for ( var Index = 0; Index < Point.Items.length; Index++ )
{
var Item = Point.Items[Index];
if (Item.Class && Item.Class.Refresh_RecalcData )
Item.Class.Refresh_RecalcData( Item.Type );
else if (Item.Class && Item.Class.RefreshRecalcData )
Item.Class.RefreshRecalcData();
if(Item.Type === AscCH.historyitem_Workbook_ChangeColorScheme && Item.Class === AscCommonExcel.g_oUndoRedoWorkbook)
{
if(Asc["editor"].wb)
{
var wsViews = Asc["editor"].wb.wsViews;
for(var i = 0; i < wsViews.length; ++i)
{
if(wsViews[i] && wsViews[i].objectRender && wsViews[i].objectRender.controller)
{
wsViews[i].objectRender.controller.RefreshAfterChangeColorScheme();
}
}
}
}
if(Item.Type === AscCH.historyitem_Worksheet_Rename)
{
var oWorkbook = Asc["editor"].wbModel;
var oData = Item.Data;
if(oWorkbook && oData)
{
var oWorksheet = oWorkbook.getWorksheetById(Item.SheetId);
if(oWorksheet)
{
var oOldNameData = oWorkbook.getChartSheetRenameData(oWorksheet, oData.from);
var oNewNameData = oWorkbook.getChartSheetRenameData(oWorksheet, oData.to);
var oAllIdMap = {};
var nId, sKey;
for(nId = 0; nId < oOldNameData.ids.length; ++nId)
{
oAllIdMap[oOldNameData.ids[nId]] = true;
}
for(nId = 0; nId < oNewNameData.ids.length; ++nId)
{
oAllIdMap[oNewNameData.ids[nId]] = true;
}
for(sKey in oAllIdMap)
{
var oChart = AscCommon.g_oTableId.Get_ById(sKey);
if(oChart &&
oChart.onDataUpdateRecalc &&
oChart.addToRecalculate)
{
oChart.onDataUpdateRecalc();
oChart.addToRecalculate();
}
}
}
}
}
}
}
}
}
};
CHistory.prototype.Reset_RecalcIndex = function()
{
this.RecIndex = this.Index;
};
CHistory.prototype.Add_RecalcNumPr = function()
{};
CHistory.prototype.Add_UpdateRegion = function(sheetid, range)
{
if(this.oRedoObjectParam) {
var updateRange = this.oRedoObjectParam.UpdateRigions[sheetid];
if(null != updateRange)
updateRange.union2(range);
else
updateRange = range.clone();
this.oRedoObjectParam.UpdateRigions[sheetid] = updateRange;
}
};
CHistory.prototype.Set_Additional_ExtendDocumentToPos = function()
{
};
CHistory.prototype.CheckUnionLastPoints = function()
{
// Не объединяем точки истории, если на предыдущей точке произошло сохранение
if ( this.Points.length < 2)
return;
var Point1 = this.Points[this.Points.length - 2];
var Point2 = this.Points[this.Points.length - 1];
// Не объединяем слова больше 63 элементов
if ( Point1.Items.length > 63 )
return;
var PrevItem = null;
var Class = null;
for ( var Index = 0; Index < Point1.Items.length; Index++ )
{
var Item = Point1.Items[Index];
if ( null === Class )
Class = Item.Class;
else if ( Class != Item.Class || "undefined" === typeof(Class.Check_HistoryUninon) || false === Class.Check_HistoryUninon(PrevItem.Data, Item.Data) )
return;
PrevItem = Item;
}
for ( var Index = 0; Index < Point2.Items.length; Index++ )
{
var Item = Point2.Items[Index];
if ( Class != Item.Class || "undefined" === typeof(Class.Check_HistoryUninon) || false === Class.Check_HistoryUninon(PrevItem.Data, Item.Data) )
return;
PrevItem = Item;
}
var NewPoint =
{
State : Point1.State,
Items : Point1.Items.concat(Point2.Items),
Time : Point1.Time,
Additional : {}
};
if ( this.SavedIndex >= this.Points.length - 2 && null !== this.SavedIndex )
this.Set_SavedIndex(this.Points.length - 3);
this.Points.splice( this.Points.length - 2, 2, NewPoint );
if ( this.Index >= this.Points.length )
{
var DiffIndex = -this.Index + (this.Points.length - 1);
this.Index += DiffIndex;
this.RecIndex += Math.max( -1, this.RecIndex + DiffIndex);
}
};
CHistory.prototype.Add_RecalcTableGrid = function()
{};
CHistory.prototype.Create_NewPoint = function(nDescription)
{
if ( 0 !== this.TurnOffHistory || 0 !== this.Transaction )
return false;
this.CanNotAddChanges = false;
if (null !== this.SavedIndex && this.Index < this.SavedIndex)
this.Set_SavedIndex(this.Index);
var Items = [];
var UpdateRigions = {};
var Time = new Date().getTime();
var UndoSheetId = null, oSelectionState = this.workbook.handlers.trigger("getSelectionState");
var oSelectRange = null;
var wsActive = this.workbook.getActiveWs();
if (wsActive) {
UndoSheetId = wsActive.getId();
// ToDo Берем всегда, т.к. в случае с LastState мы можем не попасть на нужный лист и не заселектить нужный диапазон!
oSelectRange = wsActive.getSelection().getLast(); // ToDo get only last selection range
}
// Создаем новую точку
this.Points[++this.Index] = {
Items : Items, // Массив изменений, начиная с текущего момента
UpdateRigions : UpdateRigions,
UndoSheetId: UndoSheetId,
RedoSheetId: null,
SelectRange : oSelectRange,
SelectRangeRedo : oSelectRange,
Time : Time, // Текущее время
SelectionState : oSelectionState,
Description : nDescription
};
// Удаляем ненужные точки
this.Points.length = this.Index + 1;
window['AscCommon'].g_specialPasteHelper.SpecialPasteButton_Hide();
this.workbook.handlers.trigger("toggleAutoCorrectOptions", null, true);
let oAPI = this.workbook && this.workbook.oApi;
if(oAPI) {
if(oAPI.isEyedropperStarted()) {
oAPI.cancelEyedropper();
}
if (oAPI.isInkDrawerOn()) {
oAPI.stopInkDrawer();
}
}
//this.workbook.handlers.trigger("cleanCutData");
this.Add(AscCommonExcel.g_oUndoRedoCell, AscCH.historyitem_Unknown, null, null, new AscDFH.CChangesPointChange(AscCommonExcel.g_oUndoRedoCell, this.Points[this.Index], this.workbook._getSnapshot()), false);
return true;
};
/**
* Специальная функция, для создания точки, чтобы отловить все изменения, которые происходят. После использования
* данная точка ДОЛЖНА быть удалена через функцию Remove_LastPoint.
* @param {number} description - идентификатор действия
*/
CHistory.prototype.CreateNewPointToCollectChanges = function(description)
{
// Создаем новую точку
this.Points[++this.Index] = {
Items : [], // Массив изменений, начиная с текущего момента
UpdateRigions : {},
UndoSheetId: null,
RedoSheetId: null,
SelectRange : null,
SelectRangeRedo : null,
Time : null, // Текущее время
SelectionState : null
};
this.Points.length = this.Index + 1;
this.CollectChanges = true;
return this.Index;
};
// Регистрируем новое изменение:
// Class - объект, в котором оно произошло
// Data - сами изменения
CHistory.prototype.Add = function(Class, Type, sheetid, range, Data, LocalChange, isRedoAdd)
{
if (!this.CanAddChanges())
return;
if (Class instanceof AscCommonExcel.UndoRedoItemSerializable) {
let serializable = Class;
Class = serializable.oClass;
Type = serializable.nActionType;
sheetid = serializable.nSheetId;
range = serializable.oRange;
Data = serializable.oData;
LocalChange = serializable.LocalChange;
}
this._CheckCanNotAddChanges();
if ( this.RecIndex >= this.Index )
this.RecIndex = this.Index - 1;
if (Class && Class.SetIsRecalculated && (!Class || (Class.IsNeedRecalculate && Class.IsNeedRecalculate())))
Class.SetIsRecalculated(false);
var Item =
{
Class : Class,
Type : Type,
SheetId : sheetid,
Range : null,
Data : Data,
LocalChange: this.LocalChange,
Binary : {
Pos : 0,
Len : 0
},
NeedRecalc : !this.MinorChanges && (!Class || Class.IsNeedRecalculate() || Class.IsNeedRecalculateLineNumbers())
};
if(null != range)
Item.Range = range.clone();
if(null != LocalChange)
Item.LocalChange = LocalChange;
if (!isRedoAdd) {
this.Refresh_SpreadsheetChanges(Item);
}
var curPoint = this.Points[this.Index];
curPoint.Items.push( Item );
if (null != range && null != sheetid)
{
var updateRange = curPoint.UpdateRigions[sheetid];
if(null != updateRange)
updateRange.union2(range);
else
updateRange = range.clone();
curPoint.UpdateRigions[sheetid] = updateRange;
}
if (null != sheetid)
curPoint.UndoSheetId = sheetid;
if((1 === curPoint.Items.length && curPoint.Items[0].Type !== AscCH.historyitem_Unknown) || 2 === curPoint.Items.length)
this._sendCanUndoRedo();
if (!this.CollaborativeEditing)
return;
if (Class)
{
if (Class.IsContentChange && Class.IsContentChange()) {
var bAdd = Class.IsAdd();
var Count = Class.GetItemsCount();
var ContentChanges = new AscCommon.CContentChangesElement(bAdd == true ? AscCommon.contentchanges_Add : AscCommon.contentchanges_Remove, Class.Pos, Count, Class);
Class.Class.Add_ContentChanges(ContentChanges);
AscCommon.CollaborativeEditing.Add_NewDC(Class.Class);
if (true === bAdd)
AscCommon.CollaborativeEditing.Update_DocumentPositionsOnAdd(Class.Class, Class.Pos);
else
AscCommon.CollaborativeEditing.Update_DocumentPositionsOnRemove(Class.Class, Class.Pos, Count);
}
if(Class.IsPosExtChange && Class.IsPosExtChange()){
this.CollaborativeEditing.AddPosExtChanges(Item, Class);
}
}
};
CHistory.prototype.Item_ToSerializable = function(item)
{
return new AscCommonExcel.UndoRedoItemSerializable(item.Class, item.Type, item.SheetId, item.Range, item.Data, item.LocalChange);
}
CHistory.prototype.Refresh_SpreadsheetChanges = function(item)
{
if (!this.workbook) {
return;
}
let serializable = this.Item_ToSerializable(item);
let Binary_Pos = this.BinaryWriter.GetCurPosition();
this.workbook._SerializeHistoryItem2(this.BinaryWriter, serializable);
let Binary_Len = this.BinaryWriter.GetCurPosition() - Binary_Pos;
item.Binary.Pos = Binary_Pos
item.Binary.Len = Binary_Len
}
CHistory.prototype.CanAddChanges = function()
{
return (0 === this.TurnOffHistory && this.Index >= 0);
};
CHistory.prototype._sendCanUndoRedo = function()
{
if (this.Api && this.Api.wb) {
this.Api.wb.Document_UpdateUndoRedoState();
}
};
CHistory.prototype.SetSelection = function(range)
{
if ( 0 !== this.TurnOffHistory )
return;
var curPoint = this.Points[this.Index];
if (curPoint) {
curPoint.SelectRange = range;
}
};
CHistory.prototype.SetSelectionRedo = function(range)
{
if ( 0 !== this.TurnOffHistory )
return;
var curPoint = this.Points[this.Index];
if (curPoint) {
curPoint.SelectRangeRedo = range;
}
};
CHistory.prototype.GetSelection = function()
{
var oRes = null;
var curPoint = this.Points[this.Index];
if(curPoint)
oRes = curPoint.SelectRange;
return oRes;
};
CHistory.prototype.GetSelectionRedo = function()
{
var oRes = null;
var curPoint = this.Points[this.Index];
if (curPoint) {
oRes = curPoint.SelectRangeRedo;
}
return oRes;
};
CHistory.prototype.SetSheetRedo = function (sheetId) {
if (0 !== this.TurnOffHistory)
return;
var curPoint = this.Points[this.Index];
if (curPoint) {
curPoint.RedoSheetId = sheetId;
}
};
CHistory.prototype.SetSheetUndo = function (sheetId) {
if (0 !== this.TurnOffHistory)
return;
var curPoint = this.Points[this.Index];
if (curPoint) {
curPoint.UndoSheetId = sheetId;
}
};
CHistory.prototype.TurnOff = function()
{
this.TurnOffHistory++;
};
CHistory.prototype.TurnOn = function()
{
this.TurnOffHistory--;
if(this.TurnOffHistory < 0)
this.TurnOffHistory = 0;
};
CHistory.prototype.CanRegisterClasses = function()
{
return (0 === this.TurnOffHistory || this.RegisterClasses >= this.TurnOffHistory);
};
CHistory.prototype.TurnOffChanges = function()
{
this.TurnOffHistory++;
this.RegisterClasses++;
};
CHistory.prototype.TurnOnChanges = function()
{
this.TurnOffHistory--;
if(this.TurnOffHistory < 0)
this.TurnOffHistory = 0;
this.RegisterClasses--;
if (this.RegisterClasses < 0)
this.RegisterClasses = 0;
};
CHistory.prototype.StartTransaction = function()
{
if (this.IsEndTransaction() && this.workbook) {
this.workbook.dependencyFormulas.lockRecal();
this.workbook.oApi.sendEvent("asc_onUserActionStart");
}
this.Transaction++;
};
CHistory.prototype.EndTransaction = function(checkLockLastAction)
{
let t = this;
let doEndTransaction = function (skipRecal) {
if (1 === t.Transaction && !t.Is_LastPointEmpty()) {
var api = t.workbook && t.workbook.oApi;
var wsView = api && api.wb && api.wb.getWorksheet();
if (wsView) {
wsView.updateTopLeftCell();
}
t.workbook && t.workbook.handlers.trigger("EndTransactionCheckSize");
}
t.Transaction--;
if(t.Transaction < 0)
t.Transaction = 0;
if (t.IsEndTransaction() && t.workbook) {
if (!skipRecal && AscCommonExcel.g_cCalcRecursion) {
AscCommonExcel.g_cCalcRecursion.setIsCellEdited(true);
}
!skipRecal && t.workbook.dependencyFormulas.unlockRecal();
t.workbook.handlers.trigger("updateCellWatches");
t.workbook.oApi.sendEvent("asc_onUserActionEnd");
if (t.Is_LastPointEmpty()) {
t.Remove_LastPoint();
} else if (checkLockLastAction && t.isActionLock()) {
t.Undo();
}
}
}
//for custom function - add value in history
if (1 === this.Transaction) {
if (AscCommonExcel.g_cCalcRecursion) {
AscCommonExcel.g_cCalcRecursion.setIsCellEdited(true);
}
this.workbook.dependencyFormulas.unlockRecal(null, function () {
doEndTransaction(true);
});
} else {
doEndTransaction();
}
};
/** @returns {boolean} */
CHistory.prototype.IsEndTransaction = function()
{
return (0 === this.Transaction);
};
/** @returns {boolean} */
CHistory.prototype.Is_On = function()
{
return (0 === this.TurnOffHistory);
};
/** @returns {boolean} */
CHistory.prototype.IsOn = function()
{
return (0 === this.TurnOffHistory);
};
CHistory.prototype.Reset_SavedIndex = function(IsUserSave) {
this.SavedIndex = (null === this.SavedIndex && -1 === this.Index ? null : this.Index);
if (this.Is_UserSaveMode()) {
if (IsUserSave) {
this.UserSavedIndex = this.Index;
this.ForceSave = false;
}
} else {
this.ForceSave = false;
}
};
CHistory.prototype.Set_SavedIndex = function(Index) {
this.SavedIndex = Index;
if (this.Is_UserSaveMode()) {
if (null !== this.UserSavedIndex && this.UserSavedIndex > this.SavedIndex) {
this.UserSavedIndex = Index;
this.ForceSave = true;
}
} else {
this.ForceSave = true;
}
};
/** @returns {number|null} */
CHistory.prototype.GetDeleteIndex = function() {
var DeletePointIndex = this.GetDeletePointIndex();
if (null === DeletePointIndex)
return null;
var DeleteIndex = 0;
for (var i = 0; i < DeletePointIndex; ++i) {
var point = this.Points[i];
for (var j = 0; j < point.Items.length; ++j) {
if (!point.Items[j].LocalChange) {//LocalChange изменения не пойдут в совместное редактирование.
DeleteIndex += 1;
}
}
}
return DeleteIndex;
};
CHistory.prototype.GetDeletePointIndex = function() {
return null !== this.SavedIndex ? Math.min(this.SavedIndex + 1, this.Index + 1) : null;
};
/** @returns {boolean} */
CHistory.prototype.Have_Changes = function(IsNotUserSave) {
var checkIndex = (this.Is_UserSaveMode() && !IsNotUserSave) ? this.UserSavedIndex : this.SavedIndex;
if (-1 === this.Index && null === checkIndex && false === this.ForceSave) {
return false;
}
return (this.Index != checkIndex || true === this.ForceSave);
};
CHistory.prototype.GetSerializeArray = function()
{
//todo избавиться от GetSerializeArray. ходить по массиву
var aRes = [];
var i = 0;
if (null != this.SavedIndex)
i = this.SavedIndex + 1;
for(; i <= this.Index; ++i)
{
var point = this.Points[i];
var aPointChanges = [];
for(var j = 0, length2 = point.Items.length; j < length2; ++j)
{
aPointChanges.push(point.Items[j]);
}
aRes.push(aPointChanges);
}
return aRes;
};
CHistory.prototype.GetLocalChangesSize = function() {
function GetBase64Size(binarySize)
{
// Бинарник пишется Binary.Len + ";" + base64Encode(Binary.Data)
return ((binarySize + ";").length + (((4 * binarySize / 3) + 3) & ~3));
}
let res = 0;
var i = 0;
if (null != this.SavedIndex) {
i = this.SavedIndex + 1;
}
for (; i <= this.Index; ++i) {
var point = this.Points[i];
for (var j = 0, length2 = point.Items.length; j < length2; ++j) {
let item = point.Items[j];
res += GetBase64Size(item.Binary.Len);
}
}
return res;
};
CHistory.prototype._CheckCanNotAddChanges = function() {
try {
if (this.CanNotAddChanges && !this.CollectChanges) {
this.CanNotAddChanges = false;
var tmpErr = new Error();
if (tmpErr.stack) {
AscCommon.sendClientLog("error", "changesError: " + tmpErr.stack, this.workbook.oApi);
}
}
} catch (e) {
}
};
/**
* Удаляем изменения из истории, которые сохранены на сервере. Это происходит при подключении второго пользователя
*/
CHistory.prototype.RemovePointsByDeleteIndex = function()
{
var DeletePointIndex = this.GetDeletePointIndex();
if (null === DeletePointIndex)
return;
this.Points.splice(0, DeletePointIndex);
this.Index = Math.max(this.Index - DeletePointIndex, -1);
this.RecIndex = Math.max(this.RecIndex - DeletePointIndex, -1);
if (null !== this.SavedIndex) {
this.SavedIndex = this.SavedIndex - DeletePointIndex;
if (this.SavedIndex < 0) {
this.SavedIndex = null;
}
}
};
CHistory.prototype.SavePointIndex = function()
{
var oPoint = this.Points[this.Index];
if(oPoint)
{
this.PosInCurPoint = oPoint.Items.length;
}
else
{
this.PosInCurPoint = null;
}
};
CHistory.prototype.ClearPointIndex = function()
{
this.PosInCurPoint = null;
};
CHistory.prototype.UndoToPointIndex = function()
{
var oPoint = this.Points[this.Index];
if(oPoint)
{
if(this.PosInCurPoint !== null)
{
for ( var Index = oPoint.Items.length - 1; Index >= this.PosInCurPoint; Index-- )
{
var Item = oPoint.Items[Index];
if(!Item.Class.RefreshRecalcData)
Item.Class.Undo( Item.Type, Item.Data, Item.SheetId );
else
{
if (Item.Class)
{
Item.Class.Undo();
Item.Class.RefreshRecalcData();
}
}
}
oPoint.Items.splice(this.PosInCurPoint);
}
}
this.PosInCurPoint = null;
};
CHistory.prototype.Is_LastPointEmpty = function()
{
if (!this.Points[this.Index] || this.Points[this.Index].Items.length <= 0 || (this.Points[this.Index].Items.length === 1
&& this.Points[this.Index].Items[0].Type === AscCH.historyitem_Unknown))
{
return true;
}
return false;
};
CHistory.prototype.isActionLock = function()
{
let wb = this.workbook && this.workbook.oApi && this.workbook.oApi.wb;
if (wb && !wb.canEdit()) {
return true;
}
return false;
};
CHistory.prototype.Get_DocumentPositionBinary = function()
{
let wb = this.workbook && this.workbook.oApi && this.workbook.oApi.wb;
if (wb) {
var PosInfo = wb.Get_DocumentPositionInfoForCollaborative();
return AscCommon.CollaborativeEditing.GetDocumentPositionBinary(this.BinaryWriter, PosInfo);
}
return false;
};
CHistory.prototype.checkAsYouTypeEnterText = function(run, inRunPos, codePoint)
{
this.CheckUnionLastPoints();
if (this.Points.length <= 0 || this.Index !== this.Points.length - 1)
return false;
let point = this.Points[this.Index];
let description = point.Description;
if (AscDFH.historydescription_Document_AddLetter !== description
&& AscDFH.historydescription_Document_AddLetterUnion !== description
&& AscDFH.historydescription_Document_SpaceButton !== description
&& AscDFH.historydescription_Document_CorrectEnterText !== description
&& AscDFH.historydescription_Document_CompositeInput !== description
&& AscDFH.historydescription_Document_CompositeInputReplace !== description
&& AscDFH.historydescription_Presentation_ParagraphAdd !== description)
return false;
let changes = point.Items;
let lastChange = null;
for (let i = changes.length - 1; i >= 0; --i)
{
lastChange = changes[i].Class;
if (lastChange && lastChange.IsContentChange && lastChange.IsContentChange())
break;
}
return (lastChange
&& AscDFH.historyitem_ParaRun_AddItem === lastChange.Type
&& lastChange.Class === run
&& lastChange.Pos === inRunPos - 1
&& lastChange.Items.length
&& (undefined === codePoint || lastChange.Items[0].GetCodePoint() === codePoint));
};
CHistory.prototype.Update_PointInfoItem = function()
{
};
CHistory.prototype.ConvertPointItemsToSimpleChanges = function(pointIndex) {
}
CHistory.prototype.cancelGroupPoints = function()
{
let startIndex = this._getLongPointIndex();
if (-1 === startIndex)
return;
var oRedoObjectParam = this.oRedoObjectParam = new AscCommonExcel.RedoObjectParam();
let point;
for (let i = this.Index; i >= startIndex; --i)
{
point = this.Points[i];
this.private_UndoPoint(point, oRedoObjectParam);
}
if (AscCommon.isRealObject(point.SelectionState)) {
this.workbook.handlers.trigger("setSelectionState", point.SelectionState);
}
if (!window['AscCommon'].g_specialPasteHelper.specialPasteStart)
window['AscCommon'].g_specialPasteHelper.SpecialPasteButton_Hide(true);
this.Points.length = startIndex + 1;
this.Index = startIndex - 1;
return oRedoObjectParam;
};
CHistory.prototype.endGroupPoints = function()
{
this.Points.length = this.Index + 1;
let startIndex = this._getLongPointIndex();
if (-1 === startIndex)
return;
let point = this.Points[startIndex];
point.Description = AscDFH.historydescription_GroupPoints;
for (let i = startIndex + 1; i < this.Points.length; ++i)
{
let currentPoint = this.Points[i];
point.Items = point.Items.concat(currentPoint.Items);
for (let sheetId in currentPoint.UpdateRigions)
{
let currentRange = currentPoint.UpdateRigions[sheetId];
let existingRange = point.UpdateRigions[sheetId];
if (existingRange) {
existingRange.union2(currentRange);
} else {
point.UpdateRigions[sheetId] = currentRange.clone();
}
}
}
this.Points.length = startIndex + 1;
this.Index = startIndex;
};
//------------------------------------------------------------export--------------------------------------------------
window['AscCommon'] = window['AscCommon'] || {};
window['AscCommon'].CHistory = CHistory;
window['AscCommon'].History = new CHistory();
})(window);