Commit 3c49a397 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@56537 954022d7-b5bf-4e40-9824-e11837661b57
parent b5703564
...@@ -743,7 +743,7 @@ function CCollaborativeEditing() ...@@ -743,7 +743,7 @@ function CCollaborativeEditing()
this.OnStart_Load_Objects(); this.OnStart_Load_Objects();
}; };
this.Send_Changes = function() this.Send_Changes2 = function()
{ {
// Пересчитываем позиции // Пересчитываем позиции
this.Refresh_DCChanges(); this.Refresh_DCChanges();
...@@ -804,6 +804,74 @@ function CCollaborativeEditing() ...@@ -804,6 +804,74 @@ function CCollaborativeEditing()
editor.WordControl.m_oLogicDocument.DrawingDocument.ClearCachePages(); editor.WordControl.m_oLogicDocument.DrawingDocument.ClearCachePages();
editor.WordControl.m_oLogicDocument.DrawingDocument.FirePaint(); editor.WordControl.m_oLogicDocument.DrawingDocument.FirePaint();
}; };
this.Send_Changes = function()
{
// Пересчитываем позиции
this.Refresh_DCChanges();
// Генерируем свои изменения
var StartPoint = History.SavedIndex + 1;
var LastPoint = -1;
if ( true === this.m_bUse )
{
// (ненужные точки предварительно удаляем)
History.Clear_Redo();
LastPoint = History.Points.length - 1;
}
else
{
LastPoint = History.Index + 1;
}
var aChanges = new Array();
for ( var PointIndex = StartPoint; PointIndex < LastPoint; PointIndex++ )
{
var Point = History.Points[PointIndex];
for ( var Index = 0; Index < Point.Items.length; Index++ )
{
var Item = Point.Items[Index];
var oChanges = new CCollaborativeChanges();
oChanges.Set_FromUndoRedo( Item.Class, Item.Data, Item.Binary );
var oChanges2 = new Object();
oChanges2["Id"] = oChanges.m_sId;
oChanges2["Data"] = oChanges.m_pData;
aChanges.push( oChanges2 );
}
}
this.Release_Locks();
var UnlockCount2 = this.m_aNeedUnlock2.length;
for ( var Index = 0; Index < UnlockCount2; Index++ )
{
var Class = this.m_aNeedUnlock2[Index];
Class.Lock.Set_Type( locktype_None, false);
editor.CoAuthoringApi.releaseLocks( Class.Get_Id() );
}
this.m_aNeedUnlock.length = 0;
this.m_aNeedUnlock2.length = 0;
editor.CoAuthoringApi.saveChanges(aChanges, StartPoint);
// Чистим Undo/Redo только во время совместного редактирования
if ( true === this.m_bUse )
History.Clear();
// Обновляем точку последнего сохранения в истории
History.Reset_SavedIndex();
// Обновляем интерфейс
editor.WordControl.m_oLogicDocument.Document_UpdateInterfaceState();
editor.WordControl.m_oLogicDocument.Document_UpdateUndoRedoState();
// Перерисовываем документ (для обновления локов)
editor.WordControl.m_oLogicDocument.DrawingDocument.ClearCachePages();
editor.WordControl.m_oLogicDocument.DrawingDocument.FirePaint();
};
this.Release_Locks = function() this.Release_Locks = function()
{ {
......
...@@ -127,10 +127,13 @@ CHistory.prototype = ...@@ -127,10 +127,13 @@ CHistory.prototype =
Create_NewPoint : function() Create_NewPoint : function()
{ {
if ( this.Index < this.SavedIndex )
this.SavedIndex = this.Index;
this.Clear_Additional(); this.Clear_Additional();
this.Check_UninonLastPoints(); this.Check_UninonLastPoints();
var State = this.Document.Get_SelectionState(); var State = this.Document.Get_SelectionState();
var Items = new Array(); var Items = new Array();
var Time = new Date().getTime(); var Time = new Date().getTime();
...@@ -318,9 +321,12 @@ CHistory.prototype = ...@@ -318,9 +321,12 @@ CHistory.prototype =
Check_UninonLastPoints : function() Check_UninonLastPoints : function()
{ {
// Не объединяем точки истории, если на предыдущей точке произошло сохранение // Не объединяем точки истории, если на предыдущей точке произошло сохранение
if ( this.Points.length < 2 || this.SavedIndex >= this.Points.length - 2 ) if ( this.Points.length < 2 )
return; return;
if ( this.Index < this.SavedIndex )
this.SavedIndex = this.Index;
var Point1 = this.Points[this.Points.length - 2]; var Point1 = this.Points[this.Points.length - 2];
var Point2 = this.Points[this.Points.length - 1]; var Point2 = this.Points[this.Points.length - 1];
......
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