Commit 9ce807af authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov

Добавил функцию unSaveLock для совместного редактирования (для возможности...

Добавил функцию unSaveLock для совместного редактирования (для возможности сбросить lock сохранения)
Добавил проверку на корректность deleteIndex (он мог быть больше, чем текущий)
fix bug #28967 (при сохранении, если запрос на lock чуть долгий и мы успеваем в этот момент сделать долгую вставку данных, то у нас эти данных пропадают)

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@61694 954022d7-b5bf-4e40-9824-e11837661b57
parent dbdc5162
......@@ -120,6 +120,18 @@
}
};
CDocsCoApi.prototype.unSaveLock = function () {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.unSaveLock();
} else {
var t = this;
window.setTimeout(function () {
// Фиктивные вызовы
t.callback_OnUnSaveLock();
}, 100);
}
};
CDocsCoApi.prototype.saveChanges = function (arrayChanges, deleteIndex, excelAdditionalInfo) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.saveChanges(arrayChanges, null, deleteIndex, excelAdditionalInfo);
......@@ -271,6 +283,7 @@
this._saveCallback = [];
this.saveLockCallbackErrorTimeOutId = null;
this.saveCallbackErrorTimeOutId = null;
this.unSaveLockCallbackErrorTimeOutId = null;
this._id = null;
this._indexUser = -1;
// Если пользователей больше 1, то совместно редактируем
......@@ -431,6 +444,16 @@
this._send({"type": "isSaveLock"});
};
DocsCoApi.prototype.unSaveLock = function () {
// ToDo при разрыве соединения нужно перестать делать unSaveLock!
var t = this;
this.unSaveLockCallbackErrorTimeOutId = window.setTimeout(function () {
t.unSaveLockCallbackErrorTimeOutId = null;
t.unSaveLock();
}, this.errorTimeOut);
this._send({"type": "unSaveLock"});
};
DocsCoApi.prototype.releaseLocks = function (blockId) {
if (this._locks[blockId] && 2 === this._locks[blockId].state /*lock is ours*/) {
//Ask
......@@ -651,9 +674,12 @@
};
DocsCoApi.prototype._onUnSaveLock = function (data) {
// Очищаем предыдущий таймер
// Очищаем предыдущий таймер сохранения
if (null !== this.saveCallbackErrorTimeOutId)
clearTimeout(this.saveCallbackErrorTimeOutId);
// Очищаем предыдущий таймер снятия блокировки
if (null !== this.unSaveLockCallbackErrorTimeOutId)
clearTimeout(this.unSaveLockCallbackErrorTimeOutId);
if (-1 !== data['index'])
this.changesIndex = data['index'];
......
......@@ -2216,13 +2216,22 @@ asc_docs_api.prototype.Paste = function()
}
}
}
}
};
asc_docs_api.prototype.Share = function(){
}
};
function OnSave_Callback(e) {
if (false == e["saveLock"]) {
if (false !== editor.waitSave) {
// Мы не можем в этот момент сохранять, т.к. попали в ситуацию, когда мы залочили сохранение и успели нажать вставку до ответа
// Нужно снять lock с сохранения
editor.CoAuthoringApi.onUnSaveLock = function () {
editor.canSave = true;
};
editor.CoAuthoringApi.unSaveLock();
return;
}
editor.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.Save);
if (c_oAscCollaborativeMarksShowType.LastChanges === editor.CollaborativeMarksShowType)
......
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