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

Переработал замену, теперь те ячейки, которые не заблокированы - заменяются

asc_onRenameCellTextEnd возвращает теперь число найденных элементов и число замененных

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@48424 954022d7-b5bf-4e40-9824-e11837661b57
parent 2a4b95f5
...@@ -950,7 +950,7 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -950,7 +950,7 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
* asc_onHyperlinkClick (sUrl) - эвент на нажатие гиперлинка * asc_onHyperlinkClick (sUrl) - эвент на нажатие гиперлинка
* asc_onСoAuthoringDisconnect () - эвент об отключении от сервера без попытки reconnect * asc_onСoAuthoringDisconnect () - эвент об отключении от сервера без попытки reconnect
* asc_onSelectionRangeChanged (selectRange) - эвент о выборе диапазона для диаграммы (после нажатия кнопки выбора) * asc_onSelectionRangeChanged (selectRange) - эвент о выборе диапазона для диаграммы (после нажатия кнопки выбора)
* asc_onRenameCellTextEnd (countCells, result) - эвент об окончании замены текста в ячейках (мы не можем сразу прислать ответ) * asc_onRenameCellTextEnd (countCellsFind, countCellsReplace) - эвент об окончании замены текста в ячейках (мы не можем сразу прислать ответ)
* asc_onWorkbookLocked (result) - эвент залочена ли работа с листами или нет * asc_onWorkbookLocked (result) - эвент залочена ли работа с листами или нет
* asc_onWorksheetLocked (index, result) - эвент залочен ли лист или нет * asc_onWorksheetLocked (index, result) - эвент залочен ли лист или нет
*/ */
......
...@@ -353,7 +353,7 @@ ...@@ -353,7 +353,7 @@
"setAutoFiltersDialog" : function (arrVal) {self.handlers.trigger("asc_onSetAFDialog", arrVal);}, "setAutoFiltersDialog" : function (arrVal) {self.handlers.trigger("asc_onSetAFDialog", arrVal);},
"selectionRangeChanged" : function (val) {self.handlers.trigger("asc_onSelectionRangeChanged", val);}, "selectionRangeChanged" : function (val) {self.handlers.trigger("asc_onSelectionRangeChanged", val);},
"getDCForCharts" : function () { return self.drawingCtxCharts; }, "getDCForCharts" : function () { return self.drawingCtxCharts; },
"onRenameCellTextEnd" : function (count, res) {self.handlers.trigger("asc_onRenameCellTextEnd", count, res);} "onRenameCellTextEnd" : function (countFind, countReplace) {self.handlers.trigger("asc_onRenameCellTextEnd", countFind, countReplace);}
}); });
return new asc_WSV(wsModel, this.buffers, this.stringRender, this.maxDigitWidth, this.collaborativeEditing, opt); return new asc_WSV(wsModel, this.buffers, this.stringRender, this.maxDigitWidth, this.collaborativeEditing, opt);
}, },
......
...@@ -8641,7 +8641,7 @@ ...@@ -8641,7 +8641,7 @@
if (c === undefined) { if (c === undefined) {
asc_debug("log", "Unknown cell's info: col = " + c1 + ", row = " + r1); asc_debug("log", "Unknown cell's info: col = " + c1 + ", row = " + r1);
t._trigger("onRenameCellTextEnd", 0, false); t._trigger("onRenameCellTextEnd", 0, 0);
return; return;
} }
...@@ -8650,7 +8650,7 @@ ...@@ -8650,7 +8650,7 @@
// Попробуем сначала найти // Попробуем сначала найти
if ((true === options.isWholeCell && cellValue.length !== options.findWhat.length) || if ((true === options.isWholeCell && cellValue.length !== options.findWhat.length) ||
0 > cellValue.search(valueForSearching)) { 0 > cellValue.search(valueForSearching)) {
t._trigger("onRenameCellTextEnd", 0, false); t._trigger("onRenameCellTextEnd", 0, 0);
return; return;
} }
...@@ -8658,29 +8658,40 @@ ...@@ -8658,29 +8658,40 @@
} }
if (0 > aReplaceCells.length) { if (0 > aReplaceCells.length) {
t._trigger("onRenameCellTextEnd", 0, false); t._trigger("onRenameCellTextEnd", 0, 0);
return; return;
} }
this._replaceCellsText(aReplaceCells, valueForSearching, options); this._replaceCellsText(aReplaceCells, valueForSearching, options);
}, },
_replaceCellsText: function (aReplaceCells, valueForSearching, options) { _replaceCellsText: function (aReplaceCells, valueForSearching, options) {
var t = this;
var oSelectionHistory = this.activeRange.clone(); var oSelectionHistory = this.activeRange.clone();
var onReplaceCallback = function (isSuccess) { this.model.onStartTriggerAction();
if (false === isSuccess) { History.Create_NewPoint();
t._trigger("onRenameCellTextEnd", aReplaceCells.length, false); History.SetSelection(oSelectionHistory);
return; History.StartTransaction();
}
t.model.onStartTriggerAction(); options.indexInArray = 0;
History.Create_NewPoint(); options.countFind = aReplaceCells.length;
History.SetSelection(oSelectionHistory); options.countReplace = 0;
History.StartTransaction(); this._replaceCellText(aReplaceCells, valueForSearching, options);
},
var cell; _replaceCellText: function (aReplaceCells, valueForSearching, options) {
for (var i = 0, length = aReplaceCells.length; i < length; ++i) { var t = this;
cell = aReplaceCells[i]; if (options.indexInArray === aReplaceCells.length) {
History.EndTransaction();
t.model.onEndTriggerAction();
t._trigger("onRenameCellTextEnd", options.countFind, options.countReplace);
return;
}
var onReplaceCallback = function (isSuccess) {
var cell = aReplaceCells[options.indexInArray];
++options.indexInArray;
if (false !== isSuccess) {
++options.countReplace;
var mc = t._getMergedCellsRange(cell.c1, cell.r1); var mc = t._getMergedCellsRange(cell.c1, cell.r1);
var c1 = mc ? mc.c1 : cell.c1; var c1 = mc ? mc.c1 : cell.c1;
...@@ -8689,32 +8700,27 @@ ...@@ -8689,32 +8700,27 @@
if (c === undefined) { if (c === undefined) {
asc_debug("log", "Unknown cell's info: col = " + c1 + ", row = " + r1); asc_debug("log", "Unknown cell's info: col = " + c1 + ", row = " + r1);
continue; } else {
var cellValue = c.getValueForEdit();
cellValue = cellValue.replace(valueForSearching, options.replaceWith);
var oCellEdit = new asc_Range(c1, r1, c1, r1);
var v, newValue;
// get first fragment and change its text
v = c.getValueForEdit2().slice(0, 1);
// Создаем новый массив, т.к. getValueForEdit2 возвращает ссылку
newValue = [];
newValue[0] = {text: cellValue, format: v[0].format.clone()};
t._saveCellValueAfterEdit(oCellEdit, c, newValue, /*flags*/undefined, /*skipNLCheck*/false,
/*isNotHistory*/true);
} }
var cellValue = c.getValueForEdit();
cellValue = cellValue.replace(valueForSearching, options.replaceWith);
var oCellEdit = new asc_Range(c1, r1, c1, r1);
var v, newValue;
// get first fragment and change its text
v = c.getValueForEdit2().slice(0, 1);
// Создаем новый массив, т.к. getValueForEdit2 возвращает ссылку
newValue = [];
newValue[0] = {text: cellValue, format: v[0].format.clone()};
t._saveCellValueAfterEdit(oCellEdit, c, newValue, /*flags*/undefined, /*skipNLCheck*/false,
/*isNotHistory*/true);
} }
History.EndTransaction(); t._replaceCellText(aReplaceCells, valueForSearching, options);
t.model.onEndTriggerAction();
t._trigger("onRenameCellTextEnd", aReplaceCells.length, true);
}; };
this._isLockedCells (aReplaceCells, /*subType*/null, onReplaceCallback); this._isLockedCells (aReplaceCells[options.indexInArray], /*subType*/null, onReplaceCallback);
}, },
findCell: function(reference) { findCell: function(reference) {
......
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