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