Commit 9ff89124 authored by konovalovsergey's avatar konovalovsergey Committed by Alexander.Trofimov

for Bug #31290 - "Error saveChanges" в логах DocService при Drag'n'Drop Opacity используя Webdriver

parent 5e058a2f
...@@ -1341,6 +1341,7 @@ var editor; ...@@ -1341,6 +1341,7 @@ var editor;
} }
if (0 < arrChanges.length || null !== deleteIndex || null !== excelAdditionalInfo) { if (0 < arrChanges.length || null !== deleteIndex || null !== excelAdditionalInfo) {
this.CoAuthoringApi.saveChanges(arrChanges, deleteIndex, excelAdditionalInfo); this.CoAuthoringApi.saveChanges(arrChanges, deleteIndex, excelAdditionalInfo);
History.CanNotAddChanges = true;
} else { } else {
this.CoAuthoringApi.unLockDocument(true); this.CoAuthoringApi.unLockDocument(true);
} }
......
...@@ -118,6 +118,7 @@ function CHistory(workbook) ...@@ -118,6 +118,7 @@ function CHistory(workbook)
this.LastState = null; this.LastState = null;
this.LoadFonts = {};//собираем все загруженные шрифты между моментами сохранения this.LoadFonts = {};//собираем все загруженные шрифты между моментами сохранения
this.HasLoadFonts = false; this.HasLoadFonts = false;
this.CanNotAddChanges = false;//флаг для отслеживания ошибок добавления изменений без точки:Create_NewPoint->Add->Save_Changes->Add
this.SavedIndex = null; // Номер точки отката, на которой произошло последнее сохранение this.SavedIndex = null; // Номер точки отката, на которой произошло последнее сохранение
this.ForceSave = false; // Нужно сохранение, случается, когда у нас точка SavedIndex смещается из-за объединения точек, и мы делаем Undo this.ForceSave = false; // Нужно сохранение, случается, когда у нас точка SavedIndex смещается из-за объединения точек, и мы делаем Undo
...@@ -563,6 +564,8 @@ CHistory.prototype.Create_NewPoint = function() ...@@ -563,6 +564,8 @@ CHistory.prototype.Create_NewPoint = function()
if ( 0 !== this.TurnOffHistory || 0 !== this.Transaction ) if ( 0 !== this.TurnOffHistory || 0 !== this.Transaction )
return; return;
this.CanNotAddChanges = false;
if (null !== this.SavedIndex && this.Index < this.SavedIndex) if (null !== this.SavedIndex && this.Index < this.SavedIndex)
this.Set_SavedIndex(this.Index); this.Set_SavedIndex(this.Index);
...@@ -603,6 +606,8 @@ CHistory.prototype.Add = function(Class, Type, sheetid, range, Data, LocalChange ...@@ -603,6 +606,8 @@ CHistory.prototype.Add = function(Class, Type, sheetid, range, Data, LocalChange
if ( 0 !== this.TurnOffHistory || this.Index < 0 ) if ( 0 !== this.TurnOffHistory || this.Index < 0 )
return; return;
this._CheckCanNotAddChanges();
var Item; var Item;
if ( this.RecIndex >= this.Index ) if ( this.RecIndex >= this.Index )
this.RecIndex = this.Index - 1; this.RecIndex = this.Index - 1;
...@@ -840,4 +845,15 @@ CHistory.prototype._addFonts = function (isCreateNew) { ...@@ -840,4 +845,15 @@ CHistory.prototype._addFonts = function (isCreateNew) {
this.HasLoadFonts = false; this.HasLoadFonts = false;
} }
}; };
CHistory.prototype._CheckCanNotAddChanges = function () {
try {
if (this.CanNotAddChanges) {
var tmpErr = new Error();
if (tmpErr.stack) {
this.workbook.oApi.CoAuthoringApi.sendChangesError(tmpErr.stack);
}
}
} catch (e) {
}
}
var History = null; var History = null;
\ No newline at end of file
...@@ -179,6 +179,12 @@ ...@@ -179,6 +179,12 @@
} }
}; };
CDocsCoApi.prototype.sendChangesError = function(data) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.sendChangesError(data);
}
};
CDocsCoApi.prototype.askLock = function(arrayBlockId, callback) { CDocsCoApi.prototype.askLock = function(arrayBlockId, callback) {
if (this._CoAuthoringApi && this._onlineWork) { if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.askLock(arrayBlockId, callback); this._CoAuthoringApi.askLock(arrayBlockId, callback);
...@@ -715,6 +721,12 @@ ...@@ -715,6 +721,12 @@
} }
}; };
DocsCoApi.prototype.sendChangesError = function(data) {
if (typeof data === 'string') {
this._send({'type': 'changesError', 'stack': data});
}
};
DocsCoApi.prototype._sendPrebuffered = function() { DocsCoApi.prototype._sendPrebuffered = function() {
for (var i = 0; i < this._msgBuffer.length; i++) { for (var i = 0; i < this._msgBuffer.length; i++) {
this._sendRaw(this._msgBuffer[i]); this._sendRaw(this._msgBuffer[i]);
......
...@@ -143,9 +143,10 @@ CCollaborativeEditing.prototype.Send_Changes = function(IsUserSave, AdditionalIn ...@@ -143,9 +143,10 @@ CCollaborativeEditing.prototype.Send_Changes = function(IsUserSave, AdditionalIn
this.m_aNeedUnlock.length = 0; this.m_aNeedUnlock.length = 0;
this.m_aNeedUnlock2.length = 0; this.m_aNeedUnlock2.length = 0;
if (0 < aChanges.length || null !== deleteIndex) if (0 < aChanges.length || null !== deleteIndex) {
editor.CoAuthoringApi.saveChanges(aChanges, deleteIndex, AdditionalInfo); editor.CoAuthoringApi.saveChanges(aChanges, deleteIndex, AdditionalInfo);
else History.CanNotAddChanges = true;
} else
editor.CoAuthoringApi.unLockDocument(true); editor.CoAuthoringApi.unLockDocument(true);
if ( -1 === this.m_nUseType ) if ( -1 === this.m_nUseType )
......
...@@ -84,9 +84,10 @@ CWordCollaborativeEditing.prototype.Send_Changes = function(IsUserSave, Addition ...@@ -84,9 +84,10 @@ CWordCollaborativeEditing.prototype.Send_Changes = function(IsUserSave, Addition
this.m_aNeedUnlock2.length = 0; this.m_aNeedUnlock2.length = 0;
var deleteIndex = ( null === History.SavedIndex ? null : SumIndex ); var deleteIndex = ( null === History.SavedIndex ? null : SumIndex );
if (0 < aChanges.length || null !== deleteIndex) if (0 < aChanges.length || null !== deleteIndex) {
editor.CoAuthoringApi.saveChanges(aChanges, deleteIndex, AdditionalInfo); editor.CoAuthoringApi.saveChanges(aChanges, deleteIndex, AdditionalInfo);
else History.CanNotAddChanges = true;
} else
editor.CoAuthoringApi.unLockDocument(true); editor.CoAuthoringApi.unLockDocument(true);
if (-1 === this.m_nUseType) if (-1 === this.m_nUseType)
......
...@@ -16,6 +16,7 @@ function CHistory(Document) ...@@ -16,6 +16,7 @@ function CHistory(Document)
this.Document = Document; this.Document = Document;
this.Api = null; this.Api = null;
this.CollaborativeEditing = null; this.CollaborativeEditing = null;
this.CanNotAddChanges = false;//флаг для отслеживания ошибок добавления изменений без точки:Create_NewPoint->Add->Save_Changes->Add
this.RecalculateData = this.RecalculateData =
{ {
...@@ -279,6 +280,8 @@ CHistory.prototype = ...@@ -279,6 +280,8 @@ CHistory.prototype =
if ( 0 !== this.TurnOffHistory ) if ( 0 !== this.TurnOffHistory )
return; return;
this.CanNotAddChanges = false;
if (null !== this.SavedIndex && this.Index < this.SavedIndex) if (null !== this.SavedIndex && this.Index < this.SavedIndex)
this.Set_SavedIndex(this.Index); this.Set_SavedIndex(this.Index);
...@@ -352,6 +355,8 @@ CHistory.prototype = ...@@ -352,6 +355,8 @@ CHistory.prototype =
if (0 !== this.TurnOffHistory || this.Index < 0) if (0 !== this.TurnOffHistory || this.Index < 0)
return; return;
this._CheckCanNotAddChanges();
// Заглушка на случай, если у нас во время создания одной точки в истории, после нескольких изменений идет // Заглушка на случай, если у нас во время создания одной точки в истории, после нескольких изменений идет
// пересчет, потом снова добавляются изменения и снова запускается пересчет и т.д. // пересчет, потом снова добавляются изменения и снова запускается пересчет и т.д.
if ( this.RecIndex >= this.Index ) if ( this.RecIndex >= this.Index )
...@@ -971,6 +976,18 @@ CHistory.prototype = ...@@ -971,6 +976,18 @@ CHistory.prototype =
this.BinaryWriter.WriteLong(PosInfo.Position); this.BinaryWriter.WriteLong(PosInfo.Position);
var BinaryLen = this.BinaryWriter.GetCurPosition() - BinaryPos; var BinaryLen = this.BinaryWriter.GetCurPosition() - BinaryPos;
return (BinaryLen + ";" + this.BinaryWriter.GetBase64Memory2(BinaryPos, BinaryLen)); return (BinaryLen + ";" + this.BinaryWriter.GetBase64Memory2(BinaryPos, BinaryLen));
},
_CheckCanNotAddChanges : function() {
try {
if (this.CanNotAddChanges && this.Api) {
var tmpErr = new Error();
if (tmpErr.stack) {
this.Api.CoAuthoringApi.sendChangesError(tmpErr.stack);
}
}
} catch (e) {
}
} }
}; };
......
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