1612 lines
66 KiB
JavaScript
1612 lines
66 KiB
JavaScript
/*
|
|
* (c) Copyright Ascensio System SIA 2010-2014
|
|
*
|
|
* This program is a free software product. You can redistribute it and/or
|
|
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
|
* version 3 as published by the Free Software Foundation. In accordance with
|
|
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
|
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
|
* of any third-party rights.
|
|
*
|
|
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
|
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
|
*
|
|
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
|
* EU, LV-1021.
|
|
*
|
|
* The interactive user interfaces in modified source and object code versions
|
|
* of the Program must display Appropriate Legal Notices, as required under
|
|
* Section 5 of the GNU AGPL version 3.
|
|
*
|
|
* Pursuant to Section 7(b) of the License you must retain the original Product
|
|
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
|
* grant you any rights under trademark law for use of our trademarks.
|
|
*
|
|
* All the Product's GUI elements, including illustrations and icon sets, as
|
|
* well as technical writing content are licensed under the terms of the
|
|
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
|
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
|
*
|
|
*/
|
|
function asc_CCommentCoords(obj) {
|
|
var _this = this;
|
|
if (obj) {
|
|
_this.nRow = obj.nRow;
|
|
_this.nCol = obj.nCol;
|
|
_this.nLeft = obj.nLeft;
|
|
_this.nLeftOffset = obj.nLeftOffset;
|
|
_this.nTop = obj.nTop;
|
|
_this.nTopOffset = obj.nTopOffset;
|
|
_this.nRight = obj.nRight;
|
|
_this.nRightOffset = obj.nRightOffset;
|
|
_this.nBottom = obj.nBottom;
|
|
_this.nBottomOffset = obj.nBottomOffset;
|
|
_this.dLeftMM = obj.dLeftMM;
|
|
_this.dTopMM = obj.dTopMM;
|
|
_this.dLeftPX = obj.dLeftPX;
|
|
_this.dReverseLeftPX = obj.dReverseLeftPX;
|
|
_this.dTopPX = obj.dTopPX;
|
|
_this.dWidthMM = obj.dWidthMM;
|
|
_this.dHeightMM = obj.dHeightMM;
|
|
_this.dWidthPX = obj.dWidthPX;
|
|
_this.dHeightPX = obj.dHeightPX;
|
|
_this.bMoveWithCells = obj.bMoveWithCells;
|
|
_this.bSizeWithCells = obj.bSizeWithCells;
|
|
} else {
|
|
_this.nRow = null;
|
|
_this.nCol = null;
|
|
_this.nLeft = null;
|
|
_this.nLeftOffset = null;
|
|
_this.nTop = null;
|
|
_this.nTopOffset = null;
|
|
_this.nRight = null;
|
|
_this.nRightOffset = null;
|
|
_this.nBottom = null;
|
|
_this.nBottomOffset = null;
|
|
_this.dLeftMM = null;
|
|
_this.dTopMM = null;
|
|
_this.dLeftPX = null;
|
|
_this.dReverseLeftPX = null;
|
|
_this.dTopPX = null;
|
|
_this.dWidthMM = null;
|
|
_this.dHeightMM = null;
|
|
_this.dWidthPX = null;
|
|
_this.dHeightPX = null;
|
|
_this.bMoveWithCells = false;
|
|
_this.bSizeWithCells = false;
|
|
}
|
|
}
|
|
asc_CCommentCoords.prototype = {
|
|
asc_setRow: function (val) {
|
|
this.nRow = val;
|
|
},
|
|
asc_getRow: function () {
|
|
return this.nRow;
|
|
},
|
|
asc_setCol: function (val) {
|
|
this.nCol = val;
|
|
},
|
|
asc_getCol: function () {
|
|
return this.nCol;
|
|
},
|
|
asc_setLeft: function (val) {
|
|
this.nLeft = val;
|
|
},
|
|
asc_getLeft: function () {
|
|
return this.nLeft;
|
|
},
|
|
asc_setLeftOffset: function (val) {
|
|
this.nLeftOffset = val;
|
|
},
|
|
asc_getLeftOffset: function () {
|
|
return this.nLeftOffset;
|
|
},
|
|
asc_setTop: function (val) {
|
|
this.nTop = val;
|
|
},
|
|
asc_getTop: function () {
|
|
return this.nTop;
|
|
},
|
|
asc_setTopOffset: function (val) {
|
|
this.nTopOffset = val;
|
|
},
|
|
asc_getTopOffset: function () {
|
|
return this.nTopOffset;
|
|
},
|
|
asc_setRight: function (val) {
|
|
this.nRight = val;
|
|
},
|
|
asc_getRight: function () {
|
|
return this.nRight;
|
|
},
|
|
asc_setRightOffset: function (val) {
|
|
this.nRightOffset = val;
|
|
},
|
|
asc_getRightOffset: function () {
|
|
return this.nRightOffset;
|
|
},
|
|
asc_setBottom: function (val) {
|
|
this.nBottom = val;
|
|
},
|
|
asc_getBottom: function () {
|
|
return this.nBottom;
|
|
},
|
|
asc_setBottomOffset: function (val) {
|
|
this.nBottomOffset = val;
|
|
},
|
|
asc_getBottomOffset: function () {
|
|
return this.nBottomOffset;
|
|
},
|
|
asc_setLeftMM: function (val) {
|
|
this.dLeftMM = val;
|
|
},
|
|
asc_getLeftMM: function () {
|
|
return this.dLeftMM;
|
|
},
|
|
asc_setLeftPX: function (val) {
|
|
this.dLeftPX = val;
|
|
},
|
|
asc_getLeftPX: function () {
|
|
return this.dLeftPX;
|
|
},
|
|
asc_setReverseLeftPX: function (val) {
|
|
this.dReverseLeftPX = val;
|
|
},
|
|
asc_getReverseLeftPX: function () {
|
|
return this.dReverseLeftPX;
|
|
},
|
|
asc_setTopMM: function (val) {
|
|
this.dTopMM = val;
|
|
},
|
|
asc_getTopMM: function () {
|
|
return this.dTopMM;
|
|
},
|
|
asc_setTopPX: function (val) {
|
|
this.dTopPX = val;
|
|
},
|
|
asc_getTopPX: function () {
|
|
return this.dTopPX;
|
|
},
|
|
asc_setWidthMM: function (val) {
|
|
this.dWidthMM = val;
|
|
},
|
|
asc_getWidthMM: function () {
|
|
return this.dWidthMM;
|
|
},
|
|
asc_setHeightMM: function (val) {
|
|
this.dHeightMM = val;
|
|
},
|
|
asc_getHeightMM: function () {
|
|
return this.dHeightMM;
|
|
},
|
|
asc_setWidthPX: function (val) {
|
|
this.dWidthPX = val;
|
|
},
|
|
asc_getWidthPX: function () {
|
|
return this.dWidthPX;
|
|
},
|
|
asc_setHeightPX: function (val) {
|
|
this.dHeightPX = val;
|
|
},
|
|
asc_getHeightPX: function () {
|
|
return this.dHeightPX;
|
|
},
|
|
asc_setMoveWithCells: function (val) {
|
|
this.bMoveWithCells = val;
|
|
},
|
|
asc_getMoveWithCells: function () {
|
|
return this.bMoveWithCells;
|
|
},
|
|
asc_setSizeWithCells: function (val) {
|
|
this.bSizeWithCells = val;
|
|
},
|
|
asc_getSizeWithCells: function () {
|
|
return this.bSizeWithCells;
|
|
}
|
|
};
|
|
window["Asc"]["asc_CCommentCoords"] = window["Asc"].asc_CCommentCoords = asc_CCommentCoords;
|
|
prot = asc_CCommentCoords.prototype;
|
|
prot["asc_setRow"] = prot.asc_setRow;
|
|
prot["asc_getRow"] = prot.asc_getRow;
|
|
prot["asc_setCol"] = prot.asc_setCol;
|
|
prot["asc_setCol"] = prot.asc_setCol;
|
|
prot["asc_setLeft"] = prot.asc_setLeft;
|
|
prot["asc_getLeft"] = prot.asc_getLeft;
|
|
prot["asc_setLeftOffset"] = prot.asc_setLeftOffset;
|
|
prot["asc_getLeftOffset"] = prot.asc_getLeftOffset;
|
|
prot["asc_setTop"] = prot.asc_setTop;
|
|
prot["asc_getTop"] = prot.asc_getTop;
|
|
prot["asc_setTopOffset"] = prot.asc_setTopOffset;
|
|
prot["asc_getTopOffset"] = prot.asc_getTopOffset;
|
|
prot["asc_setRight"] = prot.asc_setRight;
|
|
prot["asc_getRight"] = prot.asc_getRight;
|
|
prot["asc_setRightOffset"] = prot.asc_setRightOffset;
|
|
prot["asc_getRightOffset"] = prot.asc_getRightOffset;
|
|
prot["asc_setBottom"] = prot.asc_setBottom;
|
|
prot["asc_getBottom"] = prot.asc_getBottom;
|
|
prot["asc_setBottomOffset"] = prot.asc_setBottomOffset;
|
|
prot["asc_getBottomOffset"] = prot.asc_getBottomOffset;
|
|
prot["asc_setLeftMM"] = prot.asc_setLeftMM;
|
|
prot["asc_getLeftMM"] = prot.asc_getLeftMM;
|
|
prot["asc_setLeftPX"] = prot.asc_setLeftPX;
|
|
prot["asc_getLeftPX"] = prot.asc_getLeftPX;
|
|
prot["asc_setTopMM"] = prot.asc_setTopMM;
|
|
prot["asc_getTopMM"] = prot.asc_getTopMM;
|
|
prot["asc_setTopPX"] = prot.asc_setTopPX;
|
|
prot["asc_getTopPX"] = prot.asc_getTopPX;
|
|
prot["asc_setWidthMM"] = prot.asc_setWidthMM;
|
|
prot["asc_getWidthMM"] = prot.asc_getWidthMM;
|
|
prot["asc_setHeightMM"] = prot.asc_setHeightMM;
|
|
prot["asc_getHeightMM"] = prot.asc_getHeightMM;
|
|
prot["asc_setWidthPX"] = prot.asc_setWidthPX;
|
|
prot["asc_getWidthPX"] = prot.asc_getWidthPX;
|
|
prot["asc_setHeightPX"] = prot.asc_setHeightPX;
|
|
prot["asc_getHeightPX"] = prot.asc_getHeightPX;
|
|
prot["asc_setMoveWithCells"] = prot.asc_setMoveWithCells;
|
|
prot["asc_getMoveWithCells"] = prot.asc_getMoveWithCells;
|
|
prot["asc_setSizeWithCells"] = prot.asc_setSizeWithCells;
|
|
prot["asc_getSizeWithCells"] = prot.asc_getSizeWithCells;
|
|
function asc_CCommentData(obj) {
|
|
var _this = this;
|
|
_this.Properties = {
|
|
wsId: 0,
|
|
nCol: 1,
|
|
nRow: 2,
|
|
nId: 3,
|
|
nLevel: 5,
|
|
sText: 6,
|
|
sQuoteText: 7,
|
|
sTime: 8,
|
|
sUserId: 9,
|
|
sUserName: 10,
|
|
bDocument: 11,
|
|
bSolved: 12,
|
|
aReplies: 13,
|
|
bHidden: 14
|
|
};
|
|
if (obj) {
|
|
_this.bHidden = obj.bHidden;
|
|
_this.wsId = obj.wsId;
|
|
_this.nCol = obj.nCol;
|
|
_this.nRow = obj.nRow;
|
|
_this.nId = obj.nId;
|
|
_this.oParent = obj.oParent;
|
|
_this.nLevel = (_this.oParent == null) ? 0 : _this.oParent.asc_getLevel() + 1;
|
|
_this.sText = obj.sText;
|
|
_this.sQuoteText = obj.sQuoteText;
|
|
_this.sTime = obj.sTime;
|
|
_this.sUserId = obj.sUserId;
|
|
_this.sUserName = obj.sUserName;
|
|
_this.bDocument = obj.bDocument;
|
|
_this.bSolved = obj.bSolved;
|
|
_this.aReplies = [];
|
|
for (var i = 0; i < obj.aReplies.length; i++) {
|
|
var item = new asc_CCommentData(obj.aReplies[i]);
|
|
_this.aReplies.push(item);
|
|
}
|
|
} else {
|
|
_this.bHidden = false;
|
|
_this.wsId = null;
|
|
_this.nCol = 0;
|
|
_this.nRow = 0;
|
|
_this.nId = null;
|
|
_this.oParent = null;
|
|
_this.nLevel = 0;
|
|
_this.sText = "";
|
|
_this.sQuoteText = "";
|
|
_this.sTime = "";
|
|
_this.sUserId = "";
|
|
_this.sUserName = "";
|
|
_this.bDocument = true;
|
|
_this.bSolved = false;
|
|
_this.aReplies = [];
|
|
}
|
|
_this.setId = function () {
|
|
if (_this.bDocument) {
|
|
_this.nId = "doc_" + guid();
|
|
} else {
|
|
_this.nId = "sheet" + _this.wsId + "_" + guid();
|
|
}
|
|
};
|
|
function guid() {
|
|
function S4() {
|
|
return (((1 + Math.random()) * 65536) | 0).toString(16).substring(1);
|
|
}
|
|
return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
|
|
}
|
|
}
|
|
asc_CCommentData.prototype = {
|
|
asc_putQuoteText: function (val) {
|
|
this.sQuoteText = val;
|
|
},
|
|
asc_getQuoteText: function () {
|
|
return this.sQuoteText;
|
|
},
|
|
asc_putRow: function (val) {
|
|
this.nRow = val;
|
|
},
|
|
asc_getRow: function () {
|
|
return this.nRow;
|
|
},
|
|
asc_putCol: function (val) {
|
|
this.nCol = val;
|
|
},
|
|
asc_getCol: function () {
|
|
return this.nCol;
|
|
},
|
|
asc_putId: function (val) {
|
|
this.nId = val;
|
|
},
|
|
asc_getId: function () {
|
|
return this.nId;
|
|
},
|
|
asc_putLevel: function (val) {
|
|
this.nLevel = val;
|
|
},
|
|
asc_getLevel: function () {
|
|
return this.nLevel;
|
|
},
|
|
asc_putParent: function (obj) {
|
|
this.oParent = obj;
|
|
},
|
|
asc_getParent: function () {
|
|
return this.oParent;
|
|
},
|
|
asc_putText: function (val) {
|
|
this.sText = val;
|
|
},
|
|
asc_getText: function () {
|
|
return this.sText;
|
|
},
|
|
asc_putTime: function (val) {
|
|
this.sTime = val;
|
|
},
|
|
asc_getTime: function () {
|
|
return this.sTime;
|
|
},
|
|
asc_putUserId: function (val) {
|
|
this.sUserId = val;
|
|
},
|
|
asc_getUserId: function () {
|
|
return this.sUserId;
|
|
},
|
|
asc_putUserName: function (val) {
|
|
this.sUserName = val;
|
|
},
|
|
asc_getUserName: function () {
|
|
return this.sUserName;
|
|
},
|
|
asc_putDocumentFlag: function (val) {
|
|
this.bDocument = val;
|
|
},
|
|
asc_getDocumentFlag: function () {
|
|
return this.bDocument;
|
|
},
|
|
asc_putHiddenFlag: function (val) {
|
|
this.bHidden = val;
|
|
},
|
|
asc_getHiddenFlag: function () {
|
|
return this.bHidden;
|
|
},
|
|
asc_putSolved: function (val) {
|
|
this.bSolved = val;
|
|
},
|
|
asc_getSolved: function () {
|
|
return this.bSolved;
|
|
},
|
|
asc_getRepliesCount: function () {
|
|
return this.aReplies.length;
|
|
},
|
|
asc_getReply: function (index) {
|
|
return this.aReplies[index];
|
|
},
|
|
asc_addReply: function (oReply) {
|
|
oReply.asc_putParent(this);
|
|
oReply.asc_putDocumentFlag(this.asc_getDocumentFlag());
|
|
oReply.asc_putLevel((oReply.oParent == null) ? 0 : oReply.oParent.asc_getLevel() + 1);
|
|
oReply.wsId = (oReply.oParent == null) ? -1 : oReply.oParent.wsId;
|
|
oReply.setId();
|
|
oReply.asc_putCol(this.nCol);
|
|
oReply.asc_putRow(this.nRow);
|
|
this.aReplies.push(oReply);
|
|
return oReply;
|
|
},
|
|
getType: function () {
|
|
return UndoRedoDataTypes.CommentData;
|
|
},
|
|
getProperties: function () {
|
|
return this.Properties;
|
|
},
|
|
getProperty: function (nType) {
|
|
switch (nType) {
|
|
case this.Properties.wsId:
|
|
return this.wsId;
|
|
break;
|
|
case this.Properties.nCol:
|
|
return this.nCol;
|
|
break;
|
|
case this.Properties.nRow:
|
|
return this.nRow;
|
|
break;
|
|
case this.Properties.nId:
|
|
return this.nId;
|
|
break;
|
|
case this.Properties.nLevel:
|
|
return this.nLevel;
|
|
break;
|
|
case this.Properties.sText:
|
|
return this.sText;
|
|
break;
|
|
case this.Properties.sQuoteText:
|
|
return this.sQuoteText;
|
|
break;
|
|
case this.Properties.sTime:
|
|
return this.sTime;
|
|
break;
|
|
case this.Properties.sUserId:
|
|
return this.sUserId;
|
|
break;
|
|
case this.Properties.sUserName:
|
|
return this.sUserName;
|
|
break;
|
|
case this.Properties.bDocument:
|
|
return this.bDocument;
|
|
break;
|
|
case this.Properties.bSolved:
|
|
return this.bSolved;
|
|
break;
|
|
case this.Properties.aReplies:
|
|
return this.aReplies;
|
|
break;
|
|
case this.Properties.bHidden:
|
|
return this.bHidden;
|
|
break;
|
|
}
|
|
},
|
|
setProperty: function (nType, value) {
|
|
switch (nType) {
|
|
case this.Properties.wsId:
|
|
this.wsId = value;
|
|
break;
|
|
case this.Properties.nCol:
|
|
this.nCol = value;
|
|
break;
|
|
case this.Properties.nRow:
|
|
this.nRow = value;
|
|
break;
|
|
case this.Properties.nId:
|
|
this.nId = value;
|
|
break;
|
|
case this.Properties.nLevel:
|
|
this.nLevel = value;
|
|
break;
|
|
case this.Properties.sText:
|
|
this.sText = value;
|
|
break;
|
|
case this.Properties.sQuoteText:
|
|
this.sQuoteText = value;
|
|
break;
|
|
case this.Properties.sTime:
|
|
this.sTime = value;
|
|
break;
|
|
case this.Properties.sUserId:
|
|
this.sUserId = value;
|
|
break;
|
|
case this.Properties.sUserName:
|
|
this.sUserName = value;
|
|
break;
|
|
case this.Properties.bDocument:
|
|
this.bDocument = value;
|
|
break;
|
|
case this.Properties.bSolved:
|
|
this.bSolved = value;
|
|
break;
|
|
case this.Properties.aReplies:
|
|
this.aReplies = value;
|
|
break;
|
|
case this.Properties.bHidden:
|
|
this.bHidden = value;
|
|
break;
|
|
}
|
|
},
|
|
applyCollaborative: function (nSheetId, collaborativeEditing) {
|
|
if (!this.bDocument) {
|
|
this.nCol = collaborativeEditing.getLockMeColumn2(nSheetId, this.nCol);
|
|
this.nRow = collaborativeEditing.getLockMeRow2(nSheetId, this.nRow);
|
|
}
|
|
}
|
|
};
|
|
window["Asc"]["asc_CCommentData"] = window["Asc"].asc_CCommentData = asc_CCommentData;
|
|
prot = asc_CCommentData.prototype;
|
|
prot["asc_putRow"] = prot.asc_putRow;
|
|
prot["asc_getRow"] = prot.asc_getRow;
|
|
prot["asc_putCol"] = prot.asc_putCol;
|
|
prot["asc_getCol"] = prot.asc_getCol;
|
|
prot["asc_putId"] = prot.asc_putId;
|
|
prot["asc_getId"] = prot.asc_getId;
|
|
prot["asc_putLevel"] = prot.asc_putLevel;
|
|
prot["asc_getLevel"] = prot.asc_getLevel;
|
|
prot["asc_putParent"] = prot.asc_putParent;
|
|
prot["asc_getParent"] = prot.asc_getParent;
|
|
prot["asc_putText"] = prot.asc_putText;
|
|
prot["asc_getText"] = prot.asc_getText;
|
|
prot["asc_putQuoteText"] = prot.asc_putQuoteText;
|
|
prot["asc_getQuoteText"] = prot.asc_getQuoteText;
|
|
prot["asc_putTime"] = prot.asc_putTime;
|
|
prot["asc_getTime"] = prot.asc_getTime;
|
|
prot["asc_putUserId"] = prot.asc_putUserId;
|
|
prot["asc_getUserId"] = prot.asc_getUserId;
|
|
prot["asc_putUserName"] = prot.asc_putUserName;
|
|
prot["asc_getUserName"] = prot.asc_getUserName;
|
|
prot["asc_putDocumentFlag"] = prot.asc_putDocumentFlag;
|
|
prot["asc_getDocumentFlag"] = prot.asc_getDocumentFlag;
|
|
prot["asc_putHiddenFlag"] = prot.asc_putHiddenFlag;
|
|
prot["asc_getHiddenFlag"] = prot.asc_getHiddenFlag;
|
|
prot["asc_putSolved"] = prot.asc_putSolved;
|
|
prot["asc_getSolved"] = prot.asc_getSolved;
|
|
prot["asc_getRepliesCount"] = prot.asc_getRepliesCount;
|
|
prot["asc_getReply"] = prot.asc_getReply;
|
|
prot["asc_addReply"] = prot.asc_addReply;
|
|
function CompositeCommentData() {
|
|
var _this = this;
|
|
_this.commentBefore = null;
|
|
_this.commentAfter = null;
|
|
_this.Properties = {
|
|
commentBefore: 0,
|
|
commentAfter: 1
|
|
};
|
|
}
|
|
CompositeCommentData.prototype = {
|
|
getType: function () {
|
|
return UndoRedoDataTypes.CompositeCommentData;
|
|
},
|
|
getProperties: function () {
|
|
return this.Properties;
|
|
},
|
|
getProperty: function (nType) {
|
|
switch (nType) {
|
|
case this.Properties.commentBefore:
|
|
return this.commentBefore;
|
|
break;
|
|
case this.Properties.commentAfter:
|
|
return this.commentAfter;
|
|
break;
|
|
}
|
|
},
|
|
setProperty: function (nType, value) {
|
|
switch (nType) {
|
|
case this.Properties.commentBefore:
|
|
this.commentBefore = value;
|
|
break;
|
|
case this.Properties.commentAfter:
|
|
this.commentAfter = value;
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
function asc_CCellCommentator(currentSheet) {
|
|
var _this = this;
|
|
var asc = window["Asc"];
|
|
var asc_Range = asc.Range;
|
|
var asc_CCollaborativeRange = asc.asc_CCollaborativeRange;
|
|
var isViewerMode = function () {
|
|
return _this.worksheet._trigger("getViewerMode");
|
|
};
|
|
_this.worksheet = currentSheet;
|
|
_this.overlayCtx = currentSheet.overlayCtx;
|
|
_this.drawingCtx = currentSheet.drawingCtx;
|
|
_this.bShow = true;
|
|
_this.commentIconColor = "#FF9000";
|
|
_this.commentBorderColor = "#C7C7C7";
|
|
_this.commentTextColor = "#000000";
|
|
_this.commentFillColor = "#FFFF00";
|
|
_this.commentBorderWidth = 1;
|
|
_this.commentPadding = 4;
|
|
_this.minAreaWidth = 160;
|
|
_this.minAreaHeight = 80;
|
|
_this.aComments = [];
|
|
_this.aCommentCoords = [];
|
|
_this.lastSelectedId = null;
|
|
_this.bSaveHistory = true;
|
|
_this.isLockedComment = function (oComment, lockByDefault, callbackFunc) {
|
|
var _this = this;
|
|
var lockInfo;
|
|
var model = _this.worksheet.model;
|
|
var sheetId = model.getId();
|
|
var objectGuid = oComment.asc_getId();
|
|
if (objectGuid) {
|
|
if (false === _this.worksheet.collaborativeEditing.isCoAuthoringExcellEnable()) {
|
|
if ($.isFunction(callbackFunc)) {
|
|
callbackFunc(true);
|
|
}
|
|
return;
|
|
}
|
|
if (lockByDefault) {
|
|
_this.worksheet.collaborativeEditing.onStartCheckLock();
|
|
}
|
|
if (!oComment.asc_getDocumentFlag()) {
|
|
var c = oComment.asc_getCol();
|
|
var r = oComment.asc_getRow();
|
|
var c1, r1, c2, r2;
|
|
var mergedRange = model.getMergedByCell(r, c);
|
|
if (mergedRange) {
|
|
c1 = mergedRange.c1;
|
|
r1 = mergedRange.r1;
|
|
c2 = mergedRange.c2;
|
|
r2 = mergedRange.r2;
|
|
} else {
|
|
c1 = c2 = c;
|
|
r1 = r2 = r;
|
|
}
|
|
lockInfo = _this.worksheet.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Range, null, sheetId, new asc_CCollaborativeRange(c1, r1, c2, r2));
|
|
} else {
|
|
lockInfo = _this.worksheet.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Object, null, sheetId, objectGuid);
|
|
}
|
|
if (false === _this.worksheet.collaborativeEditing.getCollaborativeEditing()) {
|
|
if ($.isFunction(callbackFunc)) {
|
|
callbackFunc(true);
|
|
}
|
|
callbackFunc = undefined;
|
|
}
|
|
if (false !== _this.worksheet.collaborativeEditing.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeMine, false)) {
|
|
if ($.isFunction(callbackFunc)) {
|
|
callbackFunc(true);
|
|
}
|
|
return;
|
|
} else {
|
|
if (false !== _this.worksheet.collaborativeEditing.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeOther, false)) {
|
|
if ($.isFunction(callbackFunc)) {
|
|
callbackFunc(false);
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
if (lockByDefault) {
|
|
_this.worksheet.collaborativeEditing.addCheckLock(lockInfo);
|
|
_this.worksheet.collaborativeEditing.onEndCheckLock(callbackFunc);
|
|
} else {
|
|
if ($.isFunction(callbackFunc)) {
|
|
callbackFunc(true);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
_this.callLockComments = function (range) {
|
|
if (range) {
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var comment = _this.aComments[i];
|
|
if ((comment.nCol >= range.c1) && (comment.nCol <= range.c2) && (comment.nRow >= range.r1) && (comment.nRow <= range.r2)) {
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onLockComment", comment.asc_getId(), comment.asc_getUserId());
|
|
}
|
|
}
|
|
}
|
|
};
|
|
_this.unlockComments = function () {
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onUnLockComment", _this.aComments[i].asc_getId());
|
|
}
|
|
};
|
|
_this.tryUnlockComment = function (id) {
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
if (_this.aComments[i].asc_getId() == id) {
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onUnLockComment", id);
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
_this.moveRangeComments = function (rangeFrom, rangeTo) {
|
|
if (rangeFrom && rangeTo) {
|
|
var colOffset = rangeTo.c1 - rangeFrom.c1;
|
|
var rowOffset = rangeTo.r1 - rangeFrom.r1;
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onHideComment");
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var comment = _this.aComments[i];
|
|
if ((comment.nCol >= rangeFrom.c1) && (comment.nCol <= rangeFrom.c2) && (comment.nRow >= rangeFrom.r1) && (comment.nRow <= rangeFrom.r2)) {
|
|
var commentBefore = new asc_CCommentData(comment);
|
|
comment.nCol += colOffset;
|
|
comment.nRow += rowOffset;
|
|
var cellAddress = new CellAddress(comment.nRow, comment.nCol, 0);
|
|
comment.sQuoteText = cellAddress.getID() + " : " + _this.worksheet.model.getCell(cellAddress).getValueWithFormat();
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onChangeCommentData", comment.asc_getId(), comment);
|
|
var commentAfter = new asc_CCommentData(comment);
|
|
var compositeComment = new CompositeCommentData();
|
|
compositeComment.commentBefore = commentBefore;
|
|
compositeComment.commentAfter = commentAfter;
|
|
History.Create_NewPoint();
|
|
History.Add(g_oUndoRedoComment, historyitem_Comment_Change, _this.worksheet.model.getId(), null, compositeComment);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
_this.deleteCommentsRange = function (range) {
|
|
if (range) {
|
|
var aCommentId = [];
|
|
for (var i = 0; i < _this.aComments.length; ++i) {
|
|
var comment = _this.aComments[i];
|
|
if ((comment.nCol >= range.c1) && (comment.nCol <= range.c2) && (comment.nRow >= range.r1) && (comment.nRow <= range.r2)) {
|
|
aCommentId.push(comment.asc_getId());
|
|
}
|
|
}
|
|
History.StartTransaction();
|
|
for (var i = 0; i < aCommentId.length; i++) {
|
|
_this.asc_removeComment(aCommentId[i]);
|
|
}
|
|
History.EndTransaction();
|
|
}
|
|
};
|
|
_this.addCommentSerialize = function (oComment) {
|
|
var _this = this;
|
|
if (oComment) {
|
|
if (!oComment.bDocument && (oComment.nCol != null) && (oComment.nRow != null)) {
|
|
var cellAddress = new CellAddress(oComment.nRow, oComment.nCol, 0);
|
|
oComment.sQuoteText = cellAddress.getID() + " : " + _this.worksheet.model.getCell(cellAddress).getValueWithFormat();
|
|
}
|
|
_this.aComments.push(oComment);
|
|
}
|
|
};
|
|
_this.getCommentsXY = function (x, y) {
|
|
var _this = this;
|
|
var findCol = _this.worksheet._findColUnderCursor(_this.pxToPt(x), true);
|
|
var findRow = _this.worksheet._findRowUnderCursor(_this.pxToPt(y), true);
|
|
return (findCol && findRow) ? _this.asc_getComments(findCol.col, findRow.row) : [];
|
|
};
|
|
_this.drawCommentCells = function () {
|
|
if (isViewerMode()) {
|
|
return;
|
|
}
|
|
if (!_this.bShow) {
|
|
return;
|
|
}
|
|
var fvr = _this.worksheet.getFirstVisibleRow();
|
|
var fvc = _this.worksheet.getFirstVisibleCol();
|
|
var lvr = _this.worksheet.getLastVisibleRow();
|
|
var lvc = _this.worksheet.getLastVisibleCol();
|
|
var drawCells = [];
|
|
function getCellId(col, row) {
|
|
return (col + "_" + row);
|
|
}
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var commentCell = _this.aComments[i];
|
|
var mergedRange = _this.worksheet.model.getMergedByCell(commentCell.nRow, commentCell.nCol);
|
|
var drawCol = mergedRange ? mergedRange.c2 : commentCell.nCol;
|
|
var drawRow = mergedRange ? mergedRange.r1 : commentCell.nRow;
|
|
if (commentCell.asc_getDocumentFlag() || commentCell.asc_getHiddenFlag() || commentCell.asc_getSolved() || (drawCol < fvc) || (drawRow < fvr) || (drawCol > lvc) || (drawRow > lvr)) {
|
|
continue;
|
|
}
|
|
var cellId = getCellId(commentCell.nCol, commentCell.nRow);
|
|
if (drawCells[cellId]) {
|
|
continue;
|
|
}
|
|
var metrics = _this.getCellMetrics(drawCol, drawRow);
|
|
if (!metrics.result || (metrics.width <= 0) || (metrics.height <= 0)) {
|
|
continue;
|
|
}
|
|
this.drawingCtx.beginPath();
|
|
this.drawingCtx.setFillStyle(this.commentIconColor);
|
|
this.drawingCtx.moveTo(this.pxToPt(metrics.left + metrics.width - 7), this.pxToPt(metrics.top));
|
|
this.drawingCtx.lineTo(this.pxToPt(metrics.left + metrics.width - 1), this.pxToPt(metrics.top));
|
|
this.drawingCtx.lineTo(this.pxToPt(metrics.left + metrics.width - 1), this.pxToPt(metrics.top + 6));
|
|
this.drawingCtx.closePath();
|
|
this.drawingCtx.fill();
|
|
drawCells[cellId] = cellId;
|
|
}
|
|
};
|
|
_this.getTextMetrics = function (text, units) {
|
|
var _this = this;
|
|
var metrics = {
|
|
width: 0,
|
|
height: 0
|
|
};
|
|
if (text && text.length && ((typeof(text) == "string") || (typeof(text) == "number"))) {
|
|
var textOptions = _this.overlayCtx.measureText(text, units);
|
|
metrics.width = textOptions.width;
|
|
metrics.height = textOptions.lineHeight;
|
|
}
|
|
return metrics;
|
|
};
|
|
_this.getCellMetrics = function (col, row) {
|
|
var metrics = {
|
|
top: 0,
|
|
left: 0,
|
|
width: 0,
|
|
height: 0,
|
|
result: false
|
|
};
|
|
var fvr = _this.worksheet.getFirstVisibleRow();
|
|
var fvc = _this.worksheet.getFirstVisibleCol();
|
|
var mergedRange = _this.worksheet.model.getMergedByCell(row, col);
|
|
if (mergedRange && (fvc < mergedRange.c2) && (fvr < mergedRange.r2)) {
|
|
var startCol = (mergedRange.c1 > fvc) ? mergedRange.c1 : fvc;
|
|
var startRow = (mergedRange.r1 > fvr) ? mergedRange.r1 : fvr;
|
|
metrics.top = _this.worksheet.getCellTop(startRow, 0) - _this.worksheet.getCellTop(fvr, 0) + _this.worksheet.getCellTop(0, 0);
|
|
metrics.left = _this.worksheet.getCellLeft(startCol, 0) - _this.worksheet.getCellLeft(fvc, 0) + _this.worksheet.getCellLeft(0, 0);
|
|
for (var i = startCol; i <= mergedRange.c2; i++) {
|
|
metrics.width += _this.worksheet.getColumnWidth(i, 0);
|
|
}
|
|
for (var i = startRow; i <= mergedRange.r2; i++) {
|
|
metrics.height += _this.worksheet.getRowHeight(i, 0);
|
|
}
|
|
metrics.result = true;
|
|
} else {
|
|
if ((fvr <= row) && (fvc <= col)) {
|
|
metrics.top = _this.worksheet.getCellTop(row, 0) - _this.worksheet.getCellTop(fvr, 0) + _this.worksheet.getCellTop(0, 0);
|
|
metrics.left = _this.worksheet.getCellLeft(col, 0) - _this.worksheet.getCellLeft(fvc, 0) + _this.worksheet.getCellLeft(0, 0);
|
|
metrics.width = _this.worksheet.getColumnWidth(col, 0);
|
|
metrics.height = _this.worksheet.getRowHeight(row, 0);
|
|
metrics.result = true;
|
|
}
|
|
}
|
|
return metrics;
|
|
};
|
|
_this.updateCommentPosition = function () {
|
|
var _this = this;
|
|
if (_this.lastSelectedId) {
|
|
var comment = _this.asc_findComment(_this.lastSelectedId);
|
|
if (comment) {
|
|
var commentList = _this.asc_getComments(comment.asc_getCol(), comment.asc_getRow());
|
|
if (commentList.length) {
|
|
_this.drawCommentCells();
|
|
var coords = _this.getCommentsCoords(commentList);
|
|
var indexes = [];
|
|
for (var i = 0; i < commentList.length; i++) {
|
|
indexes.push(commentList[i].asc_getId());
|
|
}
|
|
var metrics = _this.getCellMetrics(comment.asc_getCol(), comment.asc_getRow());
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onUpdateCommentPosition", indexes, (metrics.result ? coords.asc_getLeftPX() : -1), (metrics.result ? coords.asc_getTopPX() : -1), (metrics.result ? coords.asc_getReverseLeftPX() : -1));
|
|
}
|
|
}
|
|
}
|
|
};
|
|
_this.updateCommentsDependencies = function (bInsert, operType, updateRange) {
|
|
var bChange = true;
|
|
var UpdatePair = function (comment, bChange) {
|
|
this.comment = comment;
|
|
this.bChange = bChange;
|
|
};
|
|
var aChangedComments = [];
|
|
function updateCommentsList(aComments) {
|
|
if (aComments.length) {
|
|
_this.bSaveHistory = false;
|
|
for (var i = 0; i < aComments.length; i++) {
|
|
if (aComments[i].bChange) {
|
|
_this.asc_changeComment(aComments[i].comment.asc_getId(), aComments[i].comment, true);
|
|
} else {
|
|
_this.asc_removeComment(aComments[i].comment.asc_getId());
|
|
}
|
|
}
|
|
_this.bSaveHistory = true;
|
|
_this.drawCommentCells();
|
|
}
|
|
}
|
|
if (bInsert) {
|
|
switch (operType) {
|
|
case c_oAscInsertOptions.InsertCellsAndShiftDown:
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var comment = new asc_CCommentData(_this.aComments[i]);
|
|
if ((comment.nRow >= updateRange.r1) && (comment.nCol >= updateRange.c1) && (comment.nCol <= updateRange.c2)) {
|
|
comment.nRow += updateRange.r2 - updateRange.r1 + 1;
|
|
aChangedComments.push(new UpdatePair(comment, true));
|
|
}
|
|
}
|
|
updateCommentsList(aChangedComments);
|
|
break;
|
|
case c_oAscInsertOptions.InsertCellsAndShiftRight:
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var comment = new asc_CCommentData(_this.aComments[i]);
|
|
if ((comment.nCol >= updateRange.c1) && (comment.nRow >= updateRange.r1) && (comment.nRow <= updateRange.r2)) {
|
|
comment.nCol += updateRange.c2 - updateRange.c1 + 1;
|
|
aChangedComments.push(new UpdatePair(comment, true));
|
|
}
|
|
}
|
|
updateCommentsList(aChangedComments);
|
|
break;
|
|
case c_oAscInsertOptions.InsertColumns:
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var comment = new asc_CCommentData(_this.aComments[i]);
|
|
if (comment.nCol >= updateRange.c1) {
|
|
comment.nCol += updateRange.c2 - updateRange.c1 + 1;
|
|
aChangedComments.push(new UpdatePair(comment, true));
|
|
}
|
|
}
|
|
updateCommentsList(aChangedComments);
|
|
break;
|
|
case c_oAscInsertOptions.InsertRows:
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var comment = new asc_CCommentData(_this.aComments[i]);
|
|
if (comment.nRow >= updateRange.r1) {
|
|
comment.nRow += updateRange.r2 - updateRange.r1 + 1;
|
|
aChangedComments.push(new UpdatePair(comment, true));
|
|
}
|
|
}
|
|
updateCommentsList(aChangedComments);
|
|
break;
|
|
}
|
|
} else {
|
|
switch (operType) {
|
|
case "deleteAllComments":
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var comment = new asc_CCommentData(_this.aComments[i]);
|
|
if ((updateRange.c1 <= comment.nCol) && (updateRange.c2 >= comment.nCol) && (comment.nRow >= updateRange.r1) && (comment.nRow <= updateRange.r2)) {
|
|
aChangedComments.push(new UpdatePair(comment, false));
|
|
}
|
|
}
|
|
updateCommentsList(aChangedComments);
|
|
break;
|
|
case c_oAscDeleteOptions.DeleteCellsAndShiftTop:
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var comment = new asc_CCommentData(_this.aComments[i]);
|
|
if ((comment.nRow > updateRange.r1) && (comment.nCol >= updateRange.c1) && (comment.nCol <= updateRange.c2)) {
|
|
comment.nRow -= updateRange.r2 - updateRange.r1 + 1;
|
|
aChangedComments.push(new UpdatePair(comment, true));
|
|
} else {
|
|
if ((updateRange.c1 <= comment.nCol) && (updateRange.c2 >= comment.nCol) && (comment.nRow >= updateRange.r1) && (comment.nRow <= updateRange.r2)) {
|
|
aChangedComments.push(new UpdatePair(comment, false));
|
|
}
|
|
}
|
|
}
|
|
updateCommentsList(aChangedComments);
|
|
break;
|
|
case c_oAscDeleteOptions.DeleteCellsAndShiftLeft:
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var comment = new asc_CCommentData(_this.aComments[i]);
|
|
if ((comment.nCol > updateRange.c2) && (comment.nRow >= updateRange.r1) && (comment.nRow <= updateRange.r2)) {
|
|
comment.nCol -= updateRange.c2 - updateRange.c1 + 1;
|
|
aChangedComments.push(new UpdatePair(comment, true));
|
|
} else {
|
|
if ((updateRange.c1 <= comment.nCol) && (updateRange.c2 >= comment.nCol) && (comment.nRow >= updateRange.r1) && (comment.nRow <= updateRange.r2)) {
|
|
aChangedComments.push(new UpdatePair(comment, false));
|
|
}
|
|
}
|
|
}
|
|
updateCommentsList(aChangedComments);
|
|
break;
|
|
case c_oAscDeleteOptions.DeleteColumns:
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var comment = new asc_CCommentData(_this.aComments[i]);
|
|
if (comment.nCol > updateRange.c2) {
|
|
comment.nCol -= updateRange.c2 - updateRange.c1 + 1;
|
|
aChangedComments.push(new UpdatePair(comment, true));
|
|
} else {
|
|
if ((updateRange.c1 <= comment.nCol) && (updateRange.c2 >= comment.nCol)) {
|
|
aChangedComments.push(new UpdatePair(comment, false));
|
|
}
|
|
}
|
|
}
|
|
updateCommentsList(aChangedComments);
|
|
break;
|
|
case c_oAscDeleteOptions.DeleteRows:
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var comment = new asc_CCommentData(_this.aComments[i]);
|
|
if (comment.nRow > updateRange.r2) {
|
|
comment.nRow -= updateRange.r2 - updateRange.r1 + 1;
|
|
aChangedComments.push(new UpdatePair(comment, true));
|
|
} else {
|
|
if ((updateRange.r1 <= comment.nRow) && (updateRange.r2 >= comment.nRow)) {
|
|
aChangedComments.push(new UpdatePair(comment, false));
|
|
}
|
|
}
|
|
}
|
|
updateCommentsList(aChangedComments);
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
_this.showHideComments = function (bHide, bColumn, start, stop) {
|
|
var aChangedComments = [];
|
|
function updateCommentsList(aComments) {
|
|
if (aComments.length) {
|
|
History.StartTransaction();
|
|
for (var i = 0; i < aComments.length; i++) {
|
|
_this.asc_changeComment(aComments[i].asc_getId(), aComments[i]);
|
|
}
|
|
History.EndTransaction();
|
|
_this.drawCommentCells();
|
|
}
|
|
}
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var comment = new asc_CCommentData(_this.aComments[i]);
|
|
if (bColumn) {
|
|
if ((comment.nCol >= start) && (comment.nCol <= stop)) {
|
|
comment.asc_putHiddenFlag(bHide);
|
|
aChangedComments.push(comment);
|
|
}
|
|
} else {
|
|
if ((comment.nRow >= start) && (comment.nRow <= stop)) {
|
|
comment.asc_putHiddenFlag(bHide);
|
|
aChangedComments.push(comment);
|
|
}
|
|
}
|
|
}
|
|
updateCommentsList(aChangedComments);
|
|
};
|
|
_this.sortComments = function (activeRange, changes) {
|
|
if (changes && activeRange) {
|
|
function updateCommentsList(aComments) {
|
|
if (aComments.length) {
|
|
History.StartTransaction();
|
|
for (var i = 0; i < aComments.length; i++) {
|
|
_this.asc_changeComment(aComments[i].asc_getId(), aComments[i], true);
|
|
}
|
|
History.EndTransaction();
|
|
_this.drawCommentCells();
|
|
}
|
|
}
|
|
var aChangedComments = [];
|
|
for (var i = 0; i < changes.places.length; i++) {
|
|
var list = _this.asc_getComments(activeRange.c1, changes.places[i].from);
|
|
for (var j = 0; j < list.length; j++) {
|
|
var comment = new asc_CCommentData(list[j]);
|
|
comment.nRow = changes.places[i].to;
|
|
aChangedComments.push(comment);
|
|
}
|
|
}
|
|
updateCommentsList(aChangedComments);
|
|
}
|
|
};
|
|
_this.resetLastSelectedId = function () {
|
|
_this.cleanLastSelection();
|
|
_this.lastSelectedId = null;
|
|
};
|
|
_this.cleanLastSelection = function () {
|
|
if (_this.lastSelectedId) {
|
|
var lastComment = _this.asc_findComment(_this.lastSelectedId);
|
|
if (lastComment) {
|
|
var lastMetrics = _this.getCellMetrics(lastComment.nCol, lastComment.nRow);
|
|
if (lastMetrics.result) {
|
|
var extraOffset = 1;
|
|
_this.overlayCtx.clearRect(_this.pxToPt(lastMetrics.left), _this.pxToPt(lastMetrics.top), _this.pxToPt(lastMetrics.width - extraOffset), _this.pxToPt(lastMetrics.height - extraOffset));
|
|
}
|
|
}
|
|
}
|
|
};
|
|
_this.calcCommentsCoords = function (bSave) {
|
|
_this.aCommentCoords = [];
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var commentCell = _this.aComments[i];
|
|
if (!_this.commentCoordsExist(commentCell.asc_getCol(), commentCell.asc_getRow())) {
|
|
var commentList = _this.asc_getComments(commentCell.asc_getCol(), commentCell.asc_getRow());
|
|
if (bSave && (commentCell.asc_getCol() == 0) && (commentCell.asc_getRow() == 0)) {
|
|
var documentComments = _this.asc_getDocumentComments();
|
|
for (var j = 0; j < documentComments.length; j++) {
|
|
commentList.push(documentComments[j]);
|
|
}
|
|
}
|
|
if (commentList.length) {
|
|
_this.aCommentCoords.push(_this.getCommentsCoords(commentList));
|
|
}
|
|
}
|
|
}
|
|
};
|
|
_this.getCommentsCoords = function (comments) {
|
|
var _this = this;
|
|
var coords = new asc_CCommentCoords();
|
|
function calcCommentArea(comment, coords) {
|
|
var originalFont = _this.overlayCtx.getFont();
|
|
var outputFont = originalFont.clone();
|
|
outputFont.Bold = true;
|
|
outputFont.FontSize = 9;
|
|
_this.overlayCtx.setFont(outputFont);
|
|
var txtMetrics = _this.getTextMetrics(comment.sUserName, 1);
|
|
coords.dHeightPX += _this.ptToPx(txtMetrics.height);
|
|
var userWidth = _this.ptToPx(txtMetrics.width);
|
|
if (coords.dWidthPX < userWidth) {
|
|
coords.dWidthPX = userWidth;
|
|
}
|
|
txtMetrics = _this.getTextMetrics(comment.sTime, 1);
|
|
coords.dHeightPX += _this.ptToPx(txtMetrics.height);
|
|
var timeWidth = _this.ptToPx(txtMetrics.width);
|
|
if (coords.dWidthPX < timeWidth) {
|
|
coords.dWidthPX = timeWidth;
|
|
}
|
|
outputFont.Bold = false;
|
|
outputFont.FontSize = 9;
|
|
_this.overlayCtx.setFont(outputFont);
|
|
var commentSpl = comment.sText.split("\n");
|
|
for (var i = 0; i < commentSpl.length; i++) {
|
|
txtMetrics = _this.getTextMetrics(commentSpl[i], 1);
|
|
coords.dHeightPX += _this.ptToPx(txtMetrics.height);
|
|
var lineWidth = _this.ptToPx(txtMetrics.width);
|
|
if (coords.dWidthPX < lineWidth) {
|
|
coords.dWidthPX = lineWidth;
|
|
}
|
|
}
|
|
for (var i = 0; i < comment.aReplies.length; i++) {
|
|
calcCommentArea(comment.aReplies[i], coords);
|
|
}
|
|
if (coords.dWidthPX < _this.minAreaWidth) {
|
|
coords.dWidthPX = _this.minAreaWidth;
|
|
}
|
|
if (coords.dHeightPX < _this.minAreaHeight) {
|
|
coords.dHeightPX = _this.minAreaHeight;
|
|
}
|
|
coords.dWidthMM = _this.pxToMm(coords.dWidthPX);
|
|
coords.dHeightMM = _this.pxToMm(coords.dHeightPX);
|
|
var headerRowOffPx = _this.worksheet.getCellTop(0, 0);
|
|
var headerColOffPx = _this.worksheet.getCellLeft(0, 0);
|
|
coords.nCol = comment.nCol;
|
|
coords.nRow = comment.nRow;
|
|
var mergedRange = _this.worksheet.model.getMergedByCell(comment.nRow, comment.nCol);
|
|
coords.nLeft = (mergedRange ? mergedRange.c2 : comment.nCol) + 1;
|
|
if (!_this.worksheet.cols[coords.nLeft]) {
|
|
_this.worksheet.expandColsOnScroll(true);
|
|
_this.worksheet._trigger("reinitializeScrollX");
|
|
}
|
|
coords.nTop = mergedRange ? mergedRange.r1 : comment.nRow;
|
|
coords.nLeftOffset = 0;
|
|
coords.nTopOffset = 0;
|
|
var fvr = _this.worksheet.getFirstVisibleRow();
|
|
var fvc = _this.worksheet.getFirstVisibleCol();
|
|
coords.dReverseLeftPX = _this.worksheet.getCellLeft(comment.nCol, 0) - _this.worksheet.getCellLeft(fvc, 0) + headerColOffPx;
|
|
coords.dLeftPX = _this.worksheet.getCellLeft(coords.nLeft, 0) - _this.worksheet.getCellLeft(fvc, 0) + headerColOffPx;
|
|
coords.dTopPX = _this.worksheet.getCellTop(coords.nTop, 0) - _this.worksheet.getCellTop(fvr, 0) + headerRowOffPx;
|
|
var fvrPx = _this.worksheet.getCellTop(0, 0);
|
|
if (coords.dTopPX < fvrPx) {
|
|
coords.dTopPX = fvrPx;
|
|
}
|
|
coords.dLeftMM = _this.worksheet.getCellLeft(coords.nLeft, 3) - _this.worksheet.getCellLeft(fvc, 3);
|
|
coords.dTopMM = _this.worksheet.getCellTop(coords.nTop, 3) - _this.worksheet.getCellTop(fvr, 3);
|
|
var findCol = _this.worksheet._findColUnderCursor(_this.worksheet.getCellLeft(coords.nLeft, 1) + _this.pxToPt(coords.dWidthPX + headerColOffPx) - _this.worksheet.getCellLeft(fvc, 1), true);
|
|
var findRow = _this.worksheet._findRowUnderCursor(_this.worksheet.getCellTop(coords.nTop, 1) + _this.pxToPt(coords.dHeightPX + headerRowOffPx) - _this.worksheet.getCellTop(fvr, 1), true);
|
|
coords.nRight = findCol ? findCol.col : 0;
|
|
coords.nBottom = findRow ? findRow.row : 0;
|
|
coords.nRightOffset = _this.worksheet.getCellLeft(coords.nLeft, 0) + coords.nLeftOffset + coords.dWidthPX + headerColOffPx - _this.worksheet.getCellLeft(coords.nRight, 0);
|
|
coords.nBottomOffset = _this.worksheet.getCellTop(coords.nTop, 0) + coords.nTopOffset + coords.dHeightPX + headerRowOffPx - _this.worksheet.getCellTop(coords.nBottom, 0);
|
|
_this.overlayCtx.setFont(originalFont);
|
|
}
|
|
for (var i = 0; i < comments.length; i++) {
|
|
calcCommentArea(comments[i], coords);
|
|
}
|
|
if (comments.length) {
|
|
coords.dWidthPX += _this.commentPadding * 2;
|
|
coords.dWidthMM = _this.pxToMm(coords.dWidthPX);
|
|
coords.dHeightPX += _this.commentPadding * 2;
|
|
coords.dHeightMM = _this.pxToMm(coords.dHeightPX);
|
|
}
|
|
return coords;
|
|
};
|
|
_this.commentCoordsExist = function (col, row) {
|
|
var result = false;
|
|
for (var i = 0; i < _this.aCommentCoords.length; i++) {
|
|
if ((col == _this.aCommentCoords[i].nCol) && (row == _this.aCommentCoords[i].nRow)) {
|
|
return true;
|
|
}
|
|
}
|
|
return result;
|
|
};
|
|
_this.prepareCommentsToSave = function () {
|
|
_this.calcCommentsCoords(true);
|
|
};
|
|
_this.cleanSelectedComment = function () {
|
|
if (_this.lastSelectedId) {
|
|
var comment = _this.asc_findComment(_this.lastSelectedId);
|
|
if (comment && !comment.asc_getDocumentFlag() && !comment.asc_getSolved()) {
|
|
var metrics = _this.getCellMetrics(comment.asc_getCol(), comment.asc_getRow());
|
|
if (metrics.result) {
|
|
var x = _this.pxToPt(metrics.left);
|
|
var y = _this.pxToPt(metrics.top);
|
|
var w = _this.pxToPt(metrics.width);
|
|
var h = _this.pxToPt(metrics.height);
|
|
_this.overlayCtx.clearRect(x, y, w, h);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
_this.pxToPt = function (val) {
|
|
var tmp = Asc.round(val) * _this.ascCvtRatio(0, 1);
|
|
return tmp > 0 ? tmp : 0;
|
|
};
|
|
_this.ptToPx = function (val) {
|
|
var tmp = val * _this.ascCvtRatio(1, 0);
|
|
return tmp;
|
|
};
|
|
_this.mmToPx = function (val) {
|
|
var tmp = val * _this.ascCvtRatio(3, 0);
|
|
return tmp;
|
|
};
|
|
_this.pxToMm = function (val) {
|
|
var tmp = val * _this.ascCvtRatio(0, 3);
|
|
return tmp;
|
|
};
|
|
_this.ascCvtRatio = function (fromUnits, toUnits) {
|
|
return Asc.getCvtRatio(fromUnits, toUnits, _this.overlayCtx.getPPIX());
|
|
};
|
|
}
|
|
asc_CCellCommentator.prototype = {
|
|
asc_showComments: function () {
|
|
var _this = this;
|
|
_this.bShow = true;
|
|
_this.drawCommentCells();
|
|
},
|
|
asc_hideComments: function () {
|
|
var _this = this;
|
|
_this.bShow = false;
|
|
_this.drawCommentCells();
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onHideComment");
|
|
},
|
|
asc_showComment: function (id, bNew) {
|
|
var _this = this;
|
|
var comment = _this.asc_findComment(id);
|
|
if (comment) {
|
|
function callbackFunc(result) {
|
|
if (!result) {
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onLockComment", comment.asc_getId(), comment.asc_getUserId());
|
|
} else {
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onUnLockComment", comment.asc_getId());
|
|
}
|
|
var commentList = _this.asc_getComments(comment.asc_getCol(), comment.asc_getRow());
|
|
var coords = _this.getCommentsCoords(commentList);
|
|
var indexes = [];
|
|
for (var i = 0; i < commentList.length; i++) {
|
|
indexes.push(commentList[i].asc_getId());
|
|
}
|
|
if (indexes.length) {
|
|
if (_this.lastSelectedId != id) {
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onHideComment");
|
|
}
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onShowComment", indexes, coords.asc_getLeftPX(), coords.asc_getTopPX(), coords.asc_getReverseLeftPX(), bNew);
|
|
_this.drawCommentCells();
|
|
}
|
|
_this.lastSelectedId = id;
|
|
}
|
|
_this.isLockedComment(comment, false, callbackFunc);
|
|
} else {
|
|
_this.lastSelectedId = null;
|
|
}
|
|
},
|
|
asc_selectComment: function (id, bMove) {
|
|
var _this = this;
|
|
var comment = _this.asc_findComment(id);
|
|
_this.cleanLastSelection();
|
|
_this.lastSelectedId = null;
|
|
if (comment && !comment.asc_getDocumentFlag() && !comment.asc_getSolved()) {
|
|
_this.lastSelectedId = id;
|
|
var col = comment.asc_getCol();
|
|
var row = comment.asc_getRow();
|
|
var vr = _this.worksheet.visibleRange;
|
|
if (bMove) {
|
|
if ((row < vr.r1) || (row > vr.r2)) {
|
|
var offset = row - vr.r1 - Math.round((vr.r2 - vr.r1) / 2);
|
|
_this.worksheet.scrollVertical(offset);
|
|
_this.worksheet._trigger("reinitializeScrollY");
|
|
}
|
|
if ((col < vr.c1) || (col > vr.c2)) {
|
|
var offset = col - vr.c1 - Math.round((vr.c2 - vr.c1) / 2);
|
|
_this.worksheet.scrollHorizontal(offset);
|
|
_this.worksheet._trigger("reinitializeScrollX");
|
|
}
|
|
}
|
|
var metrics = _this.getCellMetrics(col, row);
|
|
if (metrics.result) {
|
|
var rangeOffset = 0;
|
|
var extraOffset = 1;
|
|
var x = _this.pxToPt(metrics.left + rangeOffset);
|
|
var y = _this.pxToPt(metrics.top + rangeOffset);
|
|
var w = _this.pxToPt(metrics.width - extraOffset - rangeOffset);
|
|
var h = _this.pxToPt(metrics.height - extraOffset - rangeOffset);
|
|
_this.overlayCtx.ctx.globalAlpha = 0.2;
|
|
_this.overlayCtx.beginPath();
|
|
_this.overlayCtx.clearRect(x, y, w, h);
|
|
_this.overlayCtx.setFillStyle(_this.commentFillColor);
|
|
_this.overlayCtx.fillRect(x, y, w, h);
|
|
_this.overlayCtx.ctx.globalAlpha = 1;
|
|
}
|
|
}
|
|
},
|
|
asc_findComment: function (id) {
|
|
var _this = this;
|
|
function checkCommentId(id, commentObject) {
|
|
if (commentObject.asc_getId() == id) {
|
|
return commentObject;
|
|
}
|
|
for (var i = 0; i < commentObject.aReplies.length; i++) {
|
|
var comment = checkCommentId(id, commentObject.aReplies[i]);
|
|
if (comment) {
|
|
return comment;
|
|
}
|
|
}
|
|
}
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
var commentCell = _this.aComments[i];
|
|
var obj = checkCommentId(id, commentCell);
|
|
if (obj) {
|
|
return obj;
|
|
}
|
|
}
|
|
return null;
|
|
},
|
|
asc_addComment: function (comment) {
|
|
var _this = this;
|
|
var oComment = comment;
|
|
var bChange = false;
|
|
oComment.wsId = _this.worksheet.model.getId();
|
|
oComment.setId();
|
|
if (!oComment.bDocument) {
|
|
var selectedCell = _this.worksheet.getSelectedRange();
|
|
var oFirst = selectedCell.getFirst();
|
|
oComment.asc_putCol(oFirst.col - 1);
|
|
oComment.asc_putRow(oFirst.row - 1);
|
|
var existComments = _this.asc_getComments(oComment.nCol, oComment.nRow);
|
|
if (existComments.length) {
|
|
oComment = existComments[0];
|
|
bChange = true;
|
|
} else {
|
|
if ((oComment.nCol != null) && (oComment.nRow != null)) {
|
|
var cellAddress = new CellAddress(oComment.nRow, oComment.nCol, 0);
|
|
oComment.sQuoteText = cellAddress.getID() + " : " + _this.worksheet.model.getCell(cellAddress).getValueWithFormat();
|
|
}
|
|
}
|
|
}
|
|
function callbackFunc(result) {
|
|
if (!result) {
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onLockComment", oComment.asc_getId(), oComment.asc_getUserId());
|
|
return;
|
|
} else {
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onUnLockComment", oComment.asc_getId());
|
|
if (!bChange) {
|
|
History.Create_NewPoint();
|
|
History.Add(g_oUndoRedoComment, historyitem_Comment_Add, _this.worksheet.model.getId(), null, new asc_CCommentData(oComment));
|
|
_this.aComments.push(oComment);
|
|
_this.drawCommentCells();
|
|
}
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onAddComment", oComment.asc_getId(), oComment);
|
|
}
|
|
}
|
|
_this.isLockedComment(oComment, true, callbackFunc);
|
|
},
|
|
asc_changeComment: function (id, oComment, bChangeCoords) {
|
|
var _this = this;
|
|
var comment = _this.asc_findComment(id);
|
|
function callbackFunc(result) {
|
|
if (!result) {
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onLockComment", comment.asc_getId(), comment.asc_getUserId());
|
|
return;
|
|
} else {
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onUnLockComment", comment.asc_getId());
|
|
var commentBefore = new asc_CCommentData(comment);
|
|
if (comment) {
|
|
if (bChangeCoords) {
|
|
comment.asc_putCol(oComment.asc_getCol());
|
|
comment.asc_putRow(oComment.asc_getRow());
|
|
}
|
|
comment.asc_putText(oComment.asc_getText());
|
|
comment.asc_putQuoteText(oComment.asc_getQuoteText());
|
|
comment.asc_putUserId(oComment.asc_getUserId());
|
|
comment.asc_putUserName(oComment.asc_getUserName());
|
|
comment.asc_putTime(oComment.asc_getTime());
|
|
comment.asc_putSolved(oComment.asc_getSolved());
|
|
comment.asc_putHiddenFlag(oComment.asc_getHiddenFlag());
|
|
comment.aReplies = [];
|
|
if (!comment.bDocument && (comment.nCol != null) && (comment.nRow != null)) {
|
|
var cellAddress = new CellAddress(comment.nRow, comment.nCol, 0);
|
|
comment.sQuoteText = cellAddress.getID() + " : " + _this.worksheet.model.getCell(cellAddress).getValueWithFormat();
|
|
}
|
|
var count = oComment.asc_getRepliesCount();
|
|
for (var i = 0; i < count; i++) {
|
|
comment.asc_addReply(oComment.asc_getReply(i));
|
|
}
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onChangeCommentData", comment.asc_getId(), comment);
|
|
}
|
|
if (_this.bSaveHistory) {
|
|
var commentAfter = new asc_CCommentData(comment);
|
|
var compositeComment = new CompositeCommentData();
|
|
compositeComment.commentBefore = commentBefore;
|
|
compositeComment.commentAfter = commentAfter;
|
|
History.Create_NewPoint();
|
|
History.Add(g_oUndoRedoComment, historyitem_Comment_Change, _this.worksheet.model.getId(), null, compositeComment);
|
|
}
|
|
_this.drawCommentCells();
|
|
}
|
|
}
|
|
_this.isLockedComment(comment, true, callbackFunc);
|
|
},
|
|
asc_removeComment: function (id) {
|
|
var _this = this;
|
|
var comment = _this.asc_findComment(id);
|
|
function callbackFunc(result) {
|
|
if (!result) {
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onLockComment", comment.asc_getId(), oComment.asc_getUserId());
|
|
return;
|
|
} else {
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onUnLockComment", comment.asc_getId());
|
|
if (comment) {
|
|
if (comment.oParent) {
|
|
for (var i = 0; i < comment.oParent.aReplies.length; i++) {
|
|
if (comment.asc_getId() == comment.oParent.aReplies[i].asc_getId()) {
|
|
if (_this.bSaveHistory) {
|
|
History.Create_NewPoint();
|
|
History.Add(g_oUndoRedoComment, historyitem_Comment_Remove, _this.worksheet.model.getId(), null, new asc_CCommentData(comment.oParent.aReplies[i]));
|
|
}
|
|
comment.oParent.aReplies.splice(i, 1);
|
|
bResult = true;
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
if (comment.asc_getId() == _this.aComments[i].asc_getId()) {
|
|
if (_this.bSaveHistory) {
|
|
History.Create_NewPoint();
|
|
History.Add(g_oUndoRedoComment, historyitem_Comment_Remove, _this.worksheet.model.getId(), null, new asc_CCommentData(_this.aComments[i]));
|
|
}
|
|
_this.aComments.splice(i, 1);
|
|
bResult = true;
|
|
break;
|
|
}
|
|
}
|
|
_this.worksheet.draw();
|
|
}
|
|
_this.drawCommentCells();
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onRemoveComment", id);
|
|
}
|
|
}
|
|
}
|
|
_this.isLockedComment(comment, true, callbackFunc);
|
|
},
|
|
asc_getComments: function (col, row) {
|
|
var comments = [];
|
|
var _this = this;
|
|
var _col = col,
|
|
_row = row,
|
|
mergedRange = null;
|
|
var length = _this.aComments.length;
|
|
if (!this.bShow) {
|
|
return comments;
|
|
}
|
|
if (0 < length) {
|
|
if (null == _col || null == _row) {
|
|
var selectedCell = _this.worksheet.getSelectedRange();
|
|
var oFirst = selectedCell.getFirst();
|
|
_col = oFirst.col - 1;
|
|
_row = oFirst.row - 1;
|
|
} else {
|
|
mergedRange = _this.worksheet.model.getMergedByCell(row, col);
|
|
}
|
|
for (var i = 0; i < length; i++) {
|
|
var commentCell = _this.aComments[i];
|
|
if (!commentCell.asc_getDocumentFlag() && !commentCell.asc_getHiddenFlag() && (commentCell.nLevel == 0)) {
|
|
if (!mergedRange) {
|
|
if ((_col == commentCell.nCol) && (_row == commentCell.nRow)) {
|
|
comments.push(commentCell);
|
|
}
|
|
} else {
|
|
if ((commentCell.nCol >= mergedRange.c1) && (commentCell.nRow >= mergedRange.r1) && (commentCell.nCol <= mergedRange.c2) && (commentCell.nRow <= mergedRange.r2)) {
|
|
comments.push(commentCell);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return comments;
|
|
},
|
|
asc_getDocumentComments: function () {
|
|
var comments = [];
|
|
for (var i = 0; i < this.aComments.length; i++) {
|
|
var commentCell = this.aComments[i];
|
|
if ((commentCell.nLevel == 0) && commentCell.asc_getDocumentFlag()) {
|
|
comments.push(commentCell);
|
|
}
|
|
}
|
|
return comments;
|
|
},
|
|
Undo: function (type, data) {
|
|
var _this = this;
|
|
switch (type) {
|
|
case historyitem_Comment_Add:
|
|
if (data.oParent) {
|
|
var parentComment = _this.asc_findComment(data.oParent.asc_getId());
|
|
for (var i = 0; i < parentComment.aReplies.length; i++) {
|
|
if (parentComment.aReplies[i].asc_getId() == data.asc_getId()) {
|
|
parentComment.aReplies.splice(i, 1);
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
if (_this.aComments[i].asc_getId() == data.asc_getId()) {
|
|
_this.aComments.splice(i, 1);
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onRemoveComment", data.asc_getId());
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case historyitem_Comment_Remove:
|
|
if (data.oParent) {
|
|
var parentComment = _this.asc_findComment(data.oParent.asc_getId());
|
|
parentComment.aReplies.push(data);
|
|
} else {
|
|
_this.aComments.push(data);
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onAddComment", data.asc_getId(), data);
|
|
}
|
|
break;
|
|
case historyitem_Comment_Change:
|
|
if (data.commentAfter.oParent) {
|
|
var parentComment = _this.asc_findComment(data.commentAfter.oParent.asc_getId());
|
|
for (var i = 0; i < parentComment.aReplies.length; i++) {
|
|
if (parentComment.aReplies[i].asc_getId() == data.asc_getId()) {
|
|
parentComment.aReplies.splice(i, 1);
|
|
parentComment.aReplies.push(data.commentBefore);
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
if (_this.aComments[i].asc_getId() == data.commentAfter.asc_getId()) {
|
|
_this.aComments.splice(i, 1);
|
|
_this.aComments.push(data.commentBefore);
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onChangeCommentData", data.commentBefore.asc_getId(), data.commentBefore);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
},
|
|
Redo: function (type, data) {
|
|
var _this = this;
|
|
switch (type) {
|
|
case historyitem_Comment_Add:
|
|
if (data.oParent) {
|
|
var parentComment = _this.asc_findComment(data.oParent.asc_getId());
|
|
parentComment.aReplies.push(data);
|
|
} else {
|
|
_this.aComments.push(data);
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onAddComment", data.asc_getId(), data);
|
|
}
|
|
break;
|
|
case historyitem_Comment_Remove:
|
|
if (data.oParent) {
|
|
var parentComment = _this.asc_findComment(data.oParent.asc_getId());
|
|
for (var i = 0; i < parentComment.aReplies.length; i++) {
|
|
if (parentComment.aReplies[i].asc_getId() == data.asc_getId()) {
|
|
parentComment.aReplies.splice(i, 1);
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
if (_this.aComments[i].asc_getId() == data.asc_getId()) {
|
|
_this.aComments.splice(i, 1);
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onRemoveComment", data.asc_getId());
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case historyitem_Comment_Change:
|
|
if (data.commentBefore.oParent) {
|
|
var parentComment = _this.asc_findComment(data.commentBefore.oParent.asc_getId());
|
|
for (var i = 0; i < parentComment.aReplies.length; i++) {
|
|
if (parentComment.aReplies[i].asc_getId() == data.asc_getId()) {
|
|
parentComment.aReplies.splice(i, 1);
|
|
parentComment.aReplies.push(data.commentAfter);
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
for (var i = 0; i < _this.aComments.length; i++) {
|
|
if (_this.aComments[i].asc_getId() == data.commentBefore.asc_getId()) {
|
|
_this.aComments.splice(i, 1);
|
|
_this.aComments.push(data.commentAfter);
|
|
_this.worksheet.model.workbook.handlers.trigger("asc_onChangeCommentData", data.commentAfter.asc_getId(), data.commentAfter);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
window["Asc"]["asc_CCellCommentator"] = window["Asc"].asc_CCellCommentator = asc_CCellCommentator;
|
|
prot = asc_CCellCommentator.prototype;
|
|
prot["asc_showComments"] = prot.asc_showComments;
|
|
prot["asc_hideComments"] = prot.asc_hideComments;
|
|
prot["asc_selectComment"] = prot.asc_selectComment;
|
|
prot["asc_showComment"] = prot.asc_showComment;
|
|
prot["asc_findComment"] = prot.asc_findComment;
|
|
prot["asc_addComment"] = prot.asc_addComment;
|
|
prot["asc_changeComment"] = prot.asc_changeComment;
|
|
prot["asc_removeComment"] = prot.asc_removeComment;
|
|
prot["asc_getComments"] = prot.asc_getComments;
|
|
prot["asc_getDocumentComments"] = prot.asc_getDocumentComments; |