Commit ae39f2e8 authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov

Для совместного редактирования заделал параметр в изменениях, который говорит...

Для совместного редактирования заделал параметр в изменениях, который говорит о том, что изменение применять не стоит (также добавил запись этого параметра на клиенте при сохранении)
В Excel реализовал схему быстрых сохранений для одного пользователя.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@54779 954022d7-b5bf-4e40-9824-e11837661b57
parent 12274afb
......@@ -407,7 +407,8 @@
}
this._send({"type": "savechanges", "changes": JSON.stringify(arrayChanges.slice(startIndex, endIndex)),
"endSaveChanges": (endIndex == arrayChanges.length), "isExcel": this._isExcel});
"startSaveChanges": (startIndex === 0), "endSaveChanges": (endIndex === arrayChanges.length),
"isCoAuthoring": this.isCoAuthoring, "isExcel": this._isExcel});
};
DocsCoApi.prototype.getUsers = function () {
......@@ -581,6 +582,8 @@
var allChanges = [];
for (var changeId in allServerChanges) {
var change = allServerChanges[changeId];
if (change["skipChange"])
continue;
var changesOneUser = change["changes"];
if (changesOneUser) {
changesOneUser = JSON.parse(changesOneUser);
......@@ -645,8 +648,7 @@
if (isStartEvent) {
if (this.onAuthParticipantsChanged)
this.onAuthParticipantsChanged (this._participants);
}
else {
} else {
if (this.onParticipantsChanged)
this.onParticipantsChanged (this._participants, countEditUsers);
}
......
......@@ -1664,8 +1664,11 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
_onSaveChanges: function (recalcIndexColumns, recalcIndexRows) {
if (this.IsSendDocumentLoadCompleate) {
var arrChanges = this.wbModel.SerializeHistory();
arrChanges.push({"index" : recalcIndexColumns, "type" : "0"});
arrChanges.push({"index" : recalcIndexRows, "type" : "1"});
if (this.collaborativeEditing.getCollaborativeEditing()) {
// Пересчетные индексы добавляем только если мы не одни
arrChanges.push({"index" : recalcIndexColumns, "type" : "0"});
arrChanges.push({"index" : recalcIndexRows, "type" : "1"});
}
this.CoAuthoringApi.saveChanges(arrChanges);
}
},
......@@ -1871,10 +1874,10 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
// Cбросим флаги модификации
History.Save();
// Пересылаем, только если началось совместное редактирование, чтобы не отключилось undo
// Пересылаем всегда, но чистим только если началось совместное редактирование
// Пересылаем свои изменения
this.collaborativeEditing.sendChanges();
if (this.collaborativeEditing.getCollaborativeEditing()) {
// Пересылаем свои изменения
this.collaborativeEditing.sendChanges();
// Шлем update для toolbar-а, т.к. когда select в lock ячейке нужно заблокировать toolbar
this.wb._onWSSelectionChanged(/*info*/null);
}
......@@ -3502,7 +3505,7 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
};
init(obj);
};
}
/*
* Export
* -----------------------------------------------------------------------------
......
......@@ -203,21 +203,24 @@
if (!this.isCoAuthoringExcellEnable())
return;
// Когда не совместное редактирование чистить ничего не нужно, но отправлять нужно.
var bIsCollaborative = this.getCollaborativeEditing();
var bCheckRedraw = false;
var bRedrawGraphicObjects = false;
if (0 < this.m_arrNeedUnlock.length ||
0 < this.m_arrNeedUnlock2.length) {
if (bIsCollaborative && (0 < this.m_arrNeedUnlock.length ||
0 < this.m_arrNeedUnlock2.length)) {
bCheckRedraw = true;
this.handlers.trigger("cleanSelection");
}
var oLock = null;
// Очищаем свои изменения
while (0 < this.m_arrNeedUnlock2.length) {
while (bIsCollaborative && 0 < this.m_arrNeedUnlock2.length) {
oLock = this.m_arrNeedUnlock2.shift();
oLock.setType(c_oAscLockTypes.kLockTypeNone, false);
if ( oLock.Element["type"] == c_oAscLockTypeElem.Object ) {
if ( this.handlers.trigger("tryResetLockedGraphicObject", oLock.Element["rangeOrObjectId"]) )
if (oLock.Element["type"] == c_oAscLockTypeElem.Object) {
if (this.handlers.trigger("tryResetLockedGraphicObject", oLock.Element["rangeOrObjectId"]))
bRedrawGraphicObjects = true;
}
this.handlers.trigger("releaseLocks", oLock.Element["guid"]);
......@@ -225,11 +228,11 @@
// Очищаем примененные чужие изменения
var nIndex = 0;
var nCount = this.m_arrNeedUnlock.length;
for (; nIndex < nCount; ++nIndex) {
for (;bIsCollaborative && nIndex < nCount; ++nIndex) {
oLock = this.m_arrNeedUnlock[nIndex];
if (c_oAscLockTypes.kLockTypeOther2 === oLock.getType()) {
if ( oLock.Element["type"] == c_oAscLockTypeElem.Object ) {
if ( this.handlers.trigger("tryResetLockedGraphicObject", oLock.Element["rangeOrObjectId"]) )
if (oLock.Element["type"] == c_oAscLockTypeElem.Object) {
if (this.handlers.trigger("tryResetLockedGraphicObject", oLock.Element["rangeOrObjectId"]))
bRedrawGraphicObjects = true;
}
this.m_arrNeedUnlock.splice(nIndex, 1);
......@@ -241,30 +244,32 @@
// Отправляем на сервер изменения
this.handlers.trigger("sendChanges", this.getRecalcIndexSave(this.m_oRecalcIndexColumns), this.getRecalcIndexSave(this.m_oRecalcIndexRows));
// Пересчитываем lock-и от чужих пользователей
this._recalcLockArrayOthers();
// Очищаем свои изменения (удаляем массив добавленных строк/столбцов)
delete this.m_oInsertColumns;
delete this.m_oInsertRows;
this.m_oInsertColumns = {};
this.m_oInsertRows = {};
// Очищаем свои пересчетные индексы
this.clearRecalcIndex();
// Чистим Undo/Redo
History.Clear();
// Перерисовываем
if (bCheckRedraw) {
this.handlers.trigger("drawSelection");
this.handlers.trigger("updateAllSheetsLock");
this.handlers.trigger("unlockComments");
this.handlers.trigger("showComments");
if (bIsCollaborative) {
// Пересчитываем lock-и от чужих пользователей
this._recalcLockArrayOthers();
// Очищаем свои изменения (удаляем массив добавленных строк/столбцов)
delete this.m_oInsertColumns;
delete this.m_oInsertRows;
this.m_oInsertColumns = {};
this.m_oInsertRows = {};
// Очищаем свои пересчетные индексы
this.clearRecalcIndex();
// Чистим Undo/Redo
History.Clear();
// Перерисовываем
if (bCheckRedraw) {
this.handlers.trigger("drawSelection");
this.handlers.trigger("updateAllSheetsLock");
this.handlers.trigger("unlockComments");
this.handlers.trigger("showComments");
}
if (bCheckRedraw || bRedrawGraphicObjects)
this.handlers.trigger("showDrawingObjects");
}
if ( bCheckRedraw || bRedrawGraphicObjects )
this.handlers.trigger("showDrawingObjects");
},
getRecalcIndexSave: function (oRecalcIndex) {
......
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