Commit 6fddc3fa authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander.Trofimov

Сделано, чтобы пересчет можно было запускать после нескольких точек истории.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@54796 954022d7-b5bf-4e40-9824-e11837661b57
parent 53cd62e0
...@@ -1118,6 +1118,8 @@ CDocument.prototype = ...@@ -1118,6 +1118,8 @@ CDocument.prototype =
// Получаем данные об произошедших изменениях // Получаем данные об произошедших изменениях
var RecalcData = ( undefined === _RecalcData ? History.Get_RecalcData() : _RecalcData ); var RecalcData = ( undefined === _RecalcData ? History.Get_RecalcData() : _RecalcData );
History.Reset_RecalcIndex();
// 1. Пересчитываем все автофигуры, которые нужно пересчитать. Изменения в них ни на что не влияют. // 1. Пересчитываем все автофигуры, которые нужно пересчитать. Изменения в них ни на что не влияют.
for ( var GraphIndex = 0; GraphIndex < RecalcData.Flow.length; GraphIndex++ ) for ( var GraphIndex = 0; GraphIndex < RecalcData.Flow.length; GraphIndex++ )
{ {
......
...@@ -10,6 +10,7 @@ function CHistory(Document) ...@@ -10,6 +10,7 @@ function CHistory(Document)
{ {
this.Index = -1; this.Index = -1;
this.SavedIndex = -1; // Номер точки отката, на которой произошло последнее сохранение this.SavedIndex = -1; // Номер точки отката, на которой произошло последнее сохранение
this.RecIndex = -1; // Номер точки, на которой произошел последний пересчет
this.Points = new Array(); // Точки истории, в каждой хранится массив с изменениями после текущей точки this.Points = new Array(); // Точки истории, в каждой хранится массив с изменениями после текущей точки
this.Document = Document; this.Document = Document;
...@@ -354,22 +355,32 @@ CHistory.prototype = ...@@ -354,22 +355,32 @@ CHistory.prototype =
{ {
if ( this.Index >= 0 ) if ( this.Index >= 0 )
{ {
// Считываем изменения, начиная с последней точки, и смотрим что надо пересчитать. var LastPoint = this.RecIndex;
var Point = this.Points[this.Index];
this.Internal_RecalcData_Clear(); this.Internal_RecalcData_Clear();
// Выполняем все действия в прямом порядке for ( var Pos = this.RecIndex + 1; Pos <= this.Index; Pos++ )
for ( var Index = 0; Index < Point.Items.length; Index++ )
{ {
var Item = Point.Items[Index]; // Считываем изменения, начиная с последней точки, и смотрим что надо пересчитать.
Item.Class.Refresh_RecalcData( Item.Data ); var Point = this.Points[Pos];
// Выполняем все действия в прямом порядке
for ( var Index = 0; Index < Point.Items.length; Index++ )
{
var Item = Point.Items[Index];
Item.Class.Refresh_RecalcData( Item.Data );
}
} }
} }
return this.RecalculateData; return this.RecalculateData;
}, },
Reset_RecalcIndex : function()
{
this.RecIndex = this.Index;
},
Is_SimpleChanges : function() Is_SimpleChanges : function()
{ {
if ( this.Index >= 0 && this.Points[this.Index].Items.length > 0 ) if ( this.Index >= 0 && this.Points[this.Index].Items.length > 0 )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment