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

Поправил перерисовку при приходе lock-объекта (делаем только если он на том же листе).

Для комментариев полностью переделал lock (баг http://bugzserver/show_bug.cgi?id=25770)
Теперь он не накладывается на lock от range (вместо добавления нового c_oAscLockTypeElem, поменяем имя листа

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@57871 954022d7-b5bf-4e40-9824-e11837661b57
parent 316c0243
...@@ -1492,13 +1492,10 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -1492,13 +1492,10 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
"drawFrozenPaneLines": function () {t._onDrawFrozenPaneLines.apply(t, arguments);}, "drawFrozenPaneLines": function () {t._onDrawFrozenPaneLines.apply(t, arguments);},
"updateAllSheetsLock": function () {t._onUpdateAllSheetsLock.apply(t, arguments);}, "updateAllSheetsLock": function () {t._onUpdateAllSheetsLock.apply(t, arguments);},
"showDrawingObjects": function () {t._onShowDrawingObjects.apply(t, arguments);}, "showDrawingObjects": function () {t._onShowDrawingObjects.apply(t, arguments);},
"resetLockedGraphicObjects": function () {t._onResetLockedGraphicObjects.apply(t, arguments);},
"tryResetLockedGraphicObject": function () {return t._onTryResetLockedGraphicObject.apply(t, arguments);},
"showComments": function () {t._onShowComments.apply(t, arguments);}, "showComments": function () {t._onShowComments.apply(t, arguments);},
"unlockComments": function () {t._onUnlockComments.apply(t);},
"tryUnlockComment": function () {t._onTryUnlockComment.apply(t, arguments);},
"cleanSelection": function () {t._onCleanSelection.apply(t, arguments);}, "cleanSelection": function () {t._onCleanSelection.apply(t, arguments);},
"updateDocumentCanSave": function () {t._onUpdateDocumentCanSave();} "updateDocumentCanSave": function () {t._onUpdateDocumentCanSave();},
"checkCommentRemoveLock": function (lockElem) {return t._onCheckCommentRemoveLock(lockElem);}
}, this.asc_getViewerMode()); }, this.asc_getViewerMode());
if (!this.CoAuthoringApi) { if (!this.CoAuthoringApi) {
...@@ -1518,22 +1515,20 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -1518,22 +1515,20 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
t.collaborativeEditing.addUnlock(lockElem); t.collaborativeEditing.addUnlock(lockElem);
} }
var drawing; var drawing, lockType = lockElem.Element["type"];
if (null != lockElem) { var oldType = lockElem.getType();
var oldType = lockElem.getType(); if (c_oAscLockTypes.kLockTypeOther2 === oldType || c_oAscLockTypes.kLockTypeOther3 === oldType)
if (c_oAscLockTypes.kLockTypeOther2 === oldType || c_oAscLockTypes.kLockTypeOther3 === oldType) lockElem.setType(c_oAscLockTypes.kLockTypeOther3, true);
lockElem.setType(c_oAscLockTypes.kLockTypeOther3, true); else
else lockElem.setType(c_oAscLockTypes.kLockTypeOther, true);
lockElem.setType(c_oAscLockTypes.kLockTypeOther, true);
// Выставляем ID пользователя, залочившего данный элемент
// Выставляем ID пользователя, залочившего данный элемент lockElem.setUserId(e["user"]);
lockElem.setUserId(e["user"]);
if (lockType === c_oAscLockTypeElem.Object) {
if (lockElem.Element["type"] === c_oAscLockTypeElem.Object) { drawing = g_oTableId.Get_ById(lockElem.Element["rangeOrObjectId"]);
drawing = g_oTableId.Get_ById(lockElem.Element["rangeOrObjectId"]); if (drawing)
if (drawing) drawing.lockType = lockElem.Type;
drawing.lockType = lockElem.Type;
}
} }
if (t.wb) { if (t.wb) {
...@@ -1544,15 +1539,21 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -1544,15 +1539,21 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
t._onUpdateSheetsLock(lockElem); t._onUpdateSheetsLock(lockElem);
var ws = t.wb.getWorksheet(); var ws = t.wb.getWorksheet();
var lockSheetId = lockElem.Element["sheetId"];
// Нужно ли обновлять закрепление областей if (lockSheetId === ws.model.getId()) {
if (t._onUpdateFrozenPane(lockElem, ws.model.getId())) if (lockType === c_oAscLockTypeElem.Object) {
ws.draw(); // Нужно ли обновлять закрепление областей
else if (t._onUpdateFrozenPane(lockElem))
ws.updateSelection(); ws.draw();
else if (drawing && ws.model === drawing.worksheet)
if (drawing && ws.model === drawing.worksheet) ws.objectRender.showDrawingObjects(true);
ws.objectRender.showDrawingObjects(true); } else if (lockType === c_oAscLockTypeElem.Range) {
ws.updateSelection();
}
} else if (0 === lockSheetId.indexOf(CCellCommentator.sStartCommentId)) {
// Коммментарий
t.handlers.trigger("asc_onLockComment", lockElem.Element["rangeOrObjectId"], e["user"]);
}
} }
} }
}; };
...@@ -1585,10 +1586,12 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -1585,10 +1586,12 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
else { else {
// Удаляем из lock-ов, тот, кто правил ушел и не сохранил // Удаляем из lock-ов, тот, кто правил ушел и не сохранил
t.collaborativeEditing.removeUnlock (lockElem); t.collaborativeEditing.removeUnlock (lockElem);
if (lockElem.Element["type"] === c_oAscLockTypeElem.Object) { if (!t._onCheckCommentRemoveLock(lockElem.Element)) {
drawing = g_oTableId.Get_ById(lockElem.Element["rangeOrObjectId"]); if (lockElem.Element["type"] === c_oAscLockTypeElem.Object) {
if (drawing) drawing = g_oTableId.Get_ById(lockElem.Element["rangeOrObjectId"]);
drawing.lockType = c_oAscLockTypes.kLockTypeNone; if (drawing)
drawing.lockType = c_oAscLockTypes.kLockTypeNone;
}
} }
} }
if (t.wb) { if (t.wb) {
...@@ -1606,7 +1609,6 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -1606,7 +1609,6 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
worksheet._drawSelection(); worksheet._drawSelection();
worksheet._drawFrozenPaneLines(); worksheet._drawFrozenPaneLines();
worksheet.objectRender.showDrawingObjects(true); worksheet.objectRender.showDrawingObjects(true);
worksheet.cellCommentator.unlockComments();
} }
}; };
this.CoAuthoringApi.onSaveChanges = function (e, userId, bSendEvent) { this.CoAuthoringApi.onSaveChanges = function (e, userId, bSendEvent) {
...@@ -1735,7 +1737,6 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -1735,7 +1737,6 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
} }
if (this.wb) { if (this.wb) {
this.wb.getWorksheet().cellCommentator.unlockComments();
// Нужно послать обновить свойства (иначе для удаления данных не обновится строка формул). // Нужно послать обновить свойства (иначе для удаления данных не обновится строка формул).
// ToDo Возможно стоит обновлять только строку формул // ToDo Возможно стоит обновлять только строку формул
this.wb._onWSSelectionChanged(null); this.wb._onWSSelectionChanged(null);
...@@ -1779,41 +1780,12 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -1779,41 +1780,12 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
} }
}; };
spreadsheet_api.prototype._onResetLockedGraphicObjects = function () {
if (this.wb) {
this.wb.getWorksheet().objectRender.resetLockedGraphicObjects();
}
};
spreadsheet_api.prototype._onTryResetLockedGraphicObject = function (id) {
if (this.wb) {
for (var key in this.wb.wsViews) {
var ws = this.wb.wsViews[key];
ws.objectRender.tryResetLockedGraphicObject(id);
}
}
};
spreadsheet_api.prototype._onShowComments = function () { spreadsheet_api.prototype._onShowComments = function () {
if (this.wb) { if (this.wb) {
this.wb.getWorksheet().cellCommentator.drawCommentCells(); this.wb.getWorksheet().cellCommentator.drawCommentCells();
} }
}; };
spreadsheet_api.prototype._onUnlockComments = function () {
if (this.wb) {
var ws = this.wb.getWorksheet();
ws.cellCommentator.unlockComments();
}
};
spreadsheet_api.prototype._onTryUnlockComment = function (id) {
if (this.wb) {
var ws = this.wb.getWorksheet();
ws.cellCommentator.tryUnlockComment(id);
}
};
spreadsheet_api.prototype._onUpdateSheetsLock = function (lockElem) { spreadsheet_api.prototype._onUpdateSheetsLock = function (lockElem) {
var t = this; var t = this;
// Шлем update для листов, т.к. нужно залочить лист // Шлем update для листов, т.к. нужно залочить лист
...@@ -1828,10 +1800,9 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -1828,10 +1800,9 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
} }
}; };
spreadsheet_api.prototype._onUpdateFrozenPane = function (lockElem, sheetId) { spreadsheet_api.prototype._onUpdateFrozenPane = function (lockElem) {
return (c_oAscLockTypeElem.Object === lockElem.Element["type"] && return (c_oAscLockTypeElem.Object === lockElem.Element["type"] &&
lockElem.Element["rangeOrObjectId"] === c_oAscLockNameFrozenPane && lockElem.Element["rangeOrObjectId"] === c_oAscLockNameFrozenPane);
lockElem.Element["sheetId"] === sheetId);
}; };
spreadsheet_api.prototype._sendWorkbookStyles = function () { spreadsheet_api.prototype._sendWorkbookStyles = function () {
...@@ -3221,6 +3192,16 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -3221,6 +3192,16 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
} }
}; };
spreadsheet_api.prototype._onCheckCommentRemoveLock = function (lockElem) {
var res = false;
if (0 === lockElem["sheetId"].indexOf(CCellCommentator.sStartCommentId)) {
// Коммментарий
res = true;
this.handlers.trigger("asc_onUnLockComment", lockElem["rangeOrObjectId"]);
}
return res;
};
// offline mode // offline mode
spreadsheet_api.prototype.offlineModeInit = function() { spreadsheet_api.prototype.offlineModeInit = function() {
......
This diff is collapsed.
...@@ -240,11 +240,14 @@ ...@@ -240,11 +240,14 @@
for (;bIsCollaborative && 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()) {
drawing = g_oTableId.Get_ById(oLock.Element["rangeOrObjectId"]); if (!this.handlers.trigger("checkCommentRemoveLock", oLock.Element)) {
if(drawing && drawing.lockType !== c_oAscLockTypes.kLockTypeNone) { drawing = g_oTableId.Get_ById(oLock.Element["rangeOrObjectId"]);
drawing.lockType = c_oAscLockTypes.kLockTypeNone; if(drawing && drawing.lockType !== c_oAscLockTypes.kLockTypeNone) {
bRedrawGraphicObjects = true; drawing.lockType = c_oAscLockTypes.kLockTypeNone;
} bRedrawGraphicObjects = true;
}
}
this.m_arrNeedUnlock.splice(nIndex, 1); this.m_arrNeedUnlock.splice(nIndex, 1);
--nIndex; --nIndex;
--nCount; --nCount;
...@@ -275,7 +278,6 @@ ...@@ -275,7 +278,6 @@
this.handlers.trigger("drawSelection"); this.handlers.trigger("drawSelection");
this.handlers.trigger("drawFrozenPaneLines"); this.handlers.trigger("drawFrozenPaneLines");
this.handlers.trigger("updateAllSheetsLock"); this.handlers.trigger("updateAllSheetsLock");
this.handlers.trigger("unlockComments");
this.handlers.trigger("showComments"); this.handlers.trigger("showComments");
} }
......
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