Commit af3ac6e5 authored by Alexander.Trofimov's avatar Alexander.Trofimov

delete argument skipNLCheck

parent 1a300e3b
...@@ -319,9 +319,9 @@ ...@@ -319,9 +319,9 @@
}; };
CellEditor.prototype.close = function (saveValue) { CellEditor.prototype.close = function (saveValue) {
var opt = this.options, ret; var opt = this.options;
if (saveValue && "function" === typeof opt.saveValueCallback) { if (saveValue) {
var isFormula = this.isFormula(); var isFormula = this.isFormula();
// Для формул делаем пересчет всегда. Для остального - только если мы изменили что-то. http://bugzilla.onlyoffice.com/show_bug.cgi?id=31889 // Для формул делаем пересчет всегда. Для остального - только если мы изменили что-то. http://bugzilla.onlyoffice.com/show_bug.cgi?id=31889
// Сюда же добавляется и ячейка с wrap-текстом, у которой выключен wrap. // Сюда же добавляется и ячейка с wrap-текстом, у которой выключен wrap.
...@@ -336,8 +336,7 @@ ...@@ -336,8 +336,7 @@
this.noUpdateMode = false; this.noUpdateMode = false;
} }
ret = opt.saveValueCallback(opt.fragments, this.textFlags, /*skip NL check*/ret); if (!opt.saveValueCallback(opt.fragments, this.textFlags)) {
if (!ret) {
// При ошибке нужно выставить флаг, чтобы по стрелкам не закрывался редактор // При ошибке нужно выставить флаг, чтобы по стрелкам не закрывался редактор
this.handlers.trigger('setStrictClose', true); this.handlers.trigger('setStrictClose', true);
return false; return false;
...@@ -786,7 +785,7 @@ ...@@ -786,7 +785,7 @@
this.options.fragments), t = this, ret = false, range, wsOPEN = this.handlers.trigger( this.options.fragments), t = this, ret = false, range, wsOPEN = this.handlers.trigger(
"getCellFormulaEnterWSOpen"), ws = wsOPEN ? wsOPEN.model : this.handlers.trigger("getActiveWS"); "getCellFormulaEnterWSOpen"), ws = wsOPEN ? wsOPEN.model : this.handlers.trigger("getActiveWS");
if (s.length < 1 || s.charAt(0) !== "=" || this.options.cellNumFormat == Asc.c_oAscNumFormatType.Text) { if (Asc.c_oAscNumFormatType.Text === this.options.cellNumFormat || s.length < 1 || s.charAt(0) !== "=") {
return ret; return ret;
} }
......
...@@ -11261,8 +11261,8 @@ ...@@ -11261,8 +11261,8 @@
newValue = []; newValue = [];
newValue[0] = new AscCommonExcel.Fragment({text: cellValue, format: v[0].format.clone()}); newValue[0] = new AscCommonExcel.Fragment({text: cellValue, format: v[0].format.clone()});
if (!t._saveCellValueAfterEdit(oCellEdit, c, newValue, /*flags*/undefined, /*skipNLCheck*/false, if (!t._saveCellValueAfterEdit(oCellEdit, c, newValue, /*flags*/undefined, /*isNotHistory*/true,
/*isNotHistory*/true, /*lockDraw*/true)) { /*lockDraw*/true)) {
options.error = true; options.error = true;
t.draw(lockDraw); t.draw(lockDraw);
return callback(options); return callback(options);
...@@ -11466,223 +11466,218 @@ ...@@ -11466,223 +11466,218 @@
return mergedRange ? mergedRange : new asc_Range(col, row, col, row); return mergedRange ? mergedRange : new asc_Range(col, row, col, row);
}; };
WorksheetView.prototype._saveCellValueAfterEdit = WorksheetView.prototype._saveCellValueAfterEdit = function (oCellEdit, c, val, flags, isNotHistory, lockDraw) {
function (oCellEdit, c, val, flags, skipNLCheck, isNotHistory, lockDraw) { var t = this;
var t = this; var oldMode = this.isFormulaEditMode;
var oldMode = t.isFormulaEditMode; this.isFormulaEditMode = false;
t.isFormulaEditMode = false;
if (!isNotHistory) {
History.Create_NewPoint();
History.StartTransaction();
}
var isFormula = t._isFormula(val); if (!isNotHistory) {
History.Create_NewPoint();
History.StartTransaction();
}
if (isFormula) { var isFormula = this._isFormula(val);
var ftext = val.reduce(function (pv, cv) { if (isFormula) {
return pv + cv.text; var ftext = val.reduce(function (pv, cv) {
}, ""); return pv + cv.text;
var ret = true; }, "");
// ToDo - при вводе формулы в заголовок автофильтра надо писать "0" var ret = true;
c.setValue(ftext, function (r) { // ToDo - при вводе формулы в заголовок автофильтра надо писать "0"
ret = r; c.setValue(ftext, function (r) {
}); ret = r;
if (!ret) { });
t.isFormulaEditMode = oldMode; if (!ret) {
History.EndTransaction(); this.isFormulaEditMode = oldMode;
return false; History.EndTransaction();
} return false;
isFormula = c.isFormula(); }
t.model.autoFilters.renameTableColumn(oCellEdit); isFormula = c.isFormula();
} else { this.model.autoFilters.renameTableColumn(oCellEdit);
c.setValue2(val); } else {
// Вызываем функцию пересчета для заголовков форматированной таблицы c.setValue2(val);
t.model.autoFilters.renameTableColumn(oCellEdit); // Вызываем функцию пересчета для заголовков форматированной таблицы
} this.model.autoFilters.renameTableColumn(oCellEdit);
}
if (!isFormula) { if (!isFormula) {
// Нужно ли выставлять WrapText (ищем символ новой строки в тексте) for (var i = 0; i < val.length; ++i) {
if (!skipNLCheck) { if (-1 !== val[i].text.indexOf(kNewLine)) {
for (var i = 0; i < val.length; ++i) { c.setWrap(true);
if (-1 !== val[i].text.indexOf(kNewLine)) { break;
c.setWrap(true); }
break; }
} }
}
}
}
t._updateCellsRange(oCellEdit, isNotHistory ? c_oAscCanChangeColWidth.none : c_oAscCanChangeColWidth.numbers, this._updateCellsRange(oCellEdit, isNotHistory ? c_oAscCanChangeColWidth.none : c_oAscCanChangeColWidth.numbers,
lockDraw); lockDraw);
if (!isNotHistory) { if (!isNotHistory) {
History.EndTransaction(); History.EndTransaction();
} }
// если вернуть false, то редактор не закроется // если вернуть false, то редактор не закроется
return true; return true;
}; };
WorksheetView.prototype.openCellEditor = WorksheetView.prototype.openCellEditor =
function (editor, fragments, cursorPos, isFocus, isClearCell, isHideCursor, isQuickInput, selectionRange) { function (editor, fragments, cursorPos, isFocus, isClearCell, isHideCursor, isQuickInput, selectionRange) {
var t = this, tc = this.cols, tr = this.rows, col, row, c, fl, mc, bg, isMerged; var t = this, tc = this.cols, tr = this.rows, col, row, c, fl, mc, bg, isMerged;
if (selectionRange) { if (selectionRange) {
this.model.selectionRange = selectionRange; this.model.selectionRange = selectionRange;
} }
if (0 < this.arrActiveFormulaRanges.length) { if (0 < this.arrActiveFormulaRanges.length) {
this.cleanSelection(); this.cleanSelection();
this.cleanFormulaRanges(); this.cleanFormulaRanges();
this._drawSelection(); this._drawSelection();
} }
var cell = this.model.selectionRange.activeCell; var cell = this.model.selectionRange.activeCell;
function getVisibleRangeObject() {
var vr = t.visibleRange.clone(), offsetX = 0, offsetY = 0;
if (t.topLeftFrozenCell) {
var cFrozen = t.topLeftFrozenCell.getCol0();
var rFrozen = t.topLeftFrozenCell.getRow0();
if (0 < cFrozen) {
if (col >= cFrozen) {
offsetX = tc[cFrozen].left - tc[0].left;
} else {
vr.c1 = 0;
vr.c2 = cFrozen - 1;
}
}
if (0 < rFrozen) {
if (row >= rFrozen) {
offsetY = tr[rFrozen].top - tr[0].top;
} else {
vr.r1 = 0;
vr.r2 = rFrozen - 1;
}
}
}
return {vr: vr, offsetX: offsetX, offsetY: offsetY};
}
col = cell.col; function getVisibleRangeObject() {
row = cell.row; var vr = t.visibleRange.clone(), offsetX = 0, offsetY = 0;
if (t.topLeftFrozenCell) {
// Возможно стоит заменить на ячейку из кеша var cFrozen = t.topLeftFrozenCell.getCol0();
c = this._getVisibleCell(col, row); var rFrozen = t.topLeftFrozenCell.getRow0();
fl = this._getCellFlags(c); if (0 < cFrozen) {
isMerged = fl.isMerged(); if (col >= cFrozen) {
if (isMerged) { offsetX = tc[cFrozen].left - tc[0].left;
mc = fl.merged; } else {
c = this._getVisibleCell(mc.c1, mc.r1); vr.c1 = 0;
fl = this._getCellFlags(c); vr.c2 = cFrozen - 1;
} }
}
if (0 < rFrozen) {
if (row >= rFrozen) {
offsetY = tr[rFrozen].top - tr[0].top;
} else {
vr.r1 = 0;
vr.r2 = rFrozen - 1;
}
}
}
return {vr: vr, offsetX: offsetX, offsetY: offsetY};
}
col = cell.col;
row = cell.row;
// Возможно стоит заменить на ячейку из кеша
c = this._getVisibleCell(col, row);
fl = this._getCellFlags(c);
isMerged = fl.isMerged();
if (isMerged) {
mc = fl.merged;
c = this._getVisibleCell(mc.c1, mc.r1);
fl = this._getCellFlags(c);
}
// Выставляем режим 'не редактируем' (иначе мы попытаемся переместить редактор, который еще не открыт) // Выставляем режим 'не редактируем' (иначе мы попытаемся переместить редактор, который еще не открыт)
this.isCellEditMode = false; this.isCellEditMode = false;
this.handlers.trigger("onScroll", this._calcActiveCellOffset()); this.handlers.trigger("onScroll", this._calcActiveCellOffset());
this.isCellEditMode = true; this.isCellEditMode = true;
bg = c.getFill(); bg = c.getFill();
this.isFormulaEditMode = false; this.isFormulaEditMode = false;
var font = c.getFont(); var font = c.getFont();
// Скрываем окно редактирования комментария // Скрываем окно редактирования комментария
this.model.workbook.handlers.trigger("asc_onHideComment"); this.model.workbook.handlers.trigger("asc_onHideComment");
if (fragments === undefined) { if (fragments === undefined) {
var _fragmentsTmp = c.getValueForEdit2(); var _fragmentsTmp = c.getValueForEdit2();
fragments = []; fragments = [];
for (var i = 0; i < _fragmentsTmp.length; ++i) { for (var i = 0; i < _fragmentsTmp.length; ++i) {
fragments.push(_fragmentsTmp[i].clone()); fragments.push(_fragmentsTmp[i].clone());
} }
} }
var arrAutoComplete = this.getCellAutoCompleteValues(cell, kMaxAutoCompleteCellEdit); var arrAutoComplete = this.getCellAutoCompleteValues(cell, kMaxAutoCompleteCellEdit);
var arrAutoCompleteLC = asc.arrayToLowerCase(arrAutoComplete); var arrAutoCompleteLC = asc.arrayToLowerCase(arrAutoComplete);
editor.open({ editor.open({
fragments: fragments, fragments: fragments,
flags: fl, flags: fl,
font: new asc.FontProperties(font.getName(), font.getSize()), font: new asc.FontProperties(font.getName(), font.getSize()),
background: bg || this.settings.cells.defaultState.background, background: bg || this.settings.cells.defaultState.background,
textColor: font.getColor() || this.settings.cells.defaultState.color, textColor: font.getColor() || this.settings.cells.defaultState.color,
cursorPos: cursorPos, cursorPos: cursorPos,
zoom: this.getZoom(), zoom: this.getZoom(),
focus: isFocus, focus: isFocus,
isClearCell: isClearCell, isClearCell: isClearCell,
isHideCursor: isHideCursor, isHideCursor: isHideCursor,
isQuickInput: isQuickInput, isQuickInput: isQuickInput,
isAddPersentFormat: isQuickInput && Asc.c_oAscNumFormatType.Percent === c.getNumFormat().getType(), isAddPersentFormat: isQuickInput && Asc.c_oAscNumFormatType.Percent === c.getNumFormatType(),
autoComplete: arrAutoComplete, autoComplete: arrAutoComplete,
autoCompleteLC: arrAutoCompleteLC, autoCompleteLC: arrAutoCompleteLC,
cellName: c.getName(), cellName: c.getName(),
cellNumFormat: c.getNumFormatType(), cellNumFormat: c.getNumFormatType(),
saveValueCallback: function (val, flags, skipNLCheck) { saveValueCallback: function (val, flags) {
var oCellEdit = isMerged ? new asc_Range(mc.c1, mc.r1, mc.c1, mc.r1) : var oCellEdit = isMerged ? new asc_Range(mc.c1, mc.r1, mc.c1, mc.r1) :
new asc_Range(col, row, col, row); new asc_Range(col, row, col, row);
return t._saveCellValueAfterEdit(oCellEdit, c, val, flags, skipNLCheck, /*isNotHistory*/false, return t._saveCellValueAfterEdit(oCellEdit, c, val, flags, /*isNotHistory*/false,
/*lockDraw*/false); /*lockDraw*/false);
}, },
getSides: function () { getSides: function () {
var _c1, _r1, _c2, _r2, ri = 0, bi = 0; var _c1, _r1, _c2, _r2, ri = 0, bi = 0;
if (isMerged) { if (isMerged) {
_c1 = mc.c1; _c1 = mc.c1;
_c2 = mc.c2; _c2 = mc.c2;
_r1 = mc.r1; _r1 = mc.r1;
_r2 = mc.r2; _r2 = mc.r2;
} else { } else {
_c1 = _c2 = col; _c1 = _c2 = col;
_r1 = _r2 = row; _r1 = _r2 = row;
} }
var vro = getVisibleRangeObject(); var vro = getVisibleRangeObject();
var i, w, h, arrLeftS = [], arrRightS = [], arrBottomS = []; var i, w, h, arrLeftS = [], arrRightS = [], arrBottomS = [];
var offsX = tc[vro.vr.c1].left - tc[0].left - vro.offsetX; var offsX = tc[vro.vr.c1].left - tc[0].left - vro.offsetX;
var offsY = tr[vro.vr.r1].top - tr[0].top - vro.offsetY; var offsY = tr[vro.vr.r1].top - tr[0].top - vro.offsetY;
var cellX = tc[_c1].left - offsX, cellY = tr[_r1].top - offsY; var cellX = tc[_c1].left - offsX, cellY = tr[_r1].top - offsY;
for (i = _c1; i >= vro.vr.c1; --i) { for (i = _c1; i >= vro.vr.c1; --i) {
if (t.width_1px < tc[i].width) { if (t.width_1px < tc[i].width) {
arrLeftS.push(tc[i].left - offsX); arrLeftS.push(tc[i].left - offsX);
} }
} }
if (_c2 > vro.vr.c2) { if (_c2 > vro.vr.c2) {
_c2 = vro.vr.c2; _c2 = vro.vr.c2;
} }
for (i = _c1; i <= vro.vr.c2; ++i) { for (i = _c1; i <= vro.vr.c2; ++i) {
w = tc[i].width; w = tc[i].width;
if (t.width_1px < w) { if (t.width_1px < w) {
arrRightS.push(tc[i].left + w - offsX); arrRightS.push(tc[i].left + w - offsX);
} }
if (_c2 === i) { if (_c2 === i) {
ri = arrRightS.length - 1; ri = arrRightS.length - 1;
} }
} }
w = t.drawingCtx.getWidth(); w = t.drawingCtx.getWidth();
if (arrRightS[arrRightS.length - 1] > w) { if (arrRightS[arrRightS.length - 1] > w) {
arrRightS[arrRightS.length - 1] = w; arrRightS[arrRightS.length - 1] = w;
} }
if (_r2 > vro.vr.r2) { if (_r2 > vro.vr.r2) {
_r2 = vro.vr.r2; _r2 = vro.vr.r2;
} }
for (i = _r1; i <= vro.vr.r2; ++i) { for (i = _r1; i <= vro.vr.r2; ++i) {
h = tr[i].height; h = tr[i].height;
if (t.height_1px < h) { if (t.height_1px < h) {
arrBottomS.push(tr[i].top + h - offsY); arrBottomS.push(tr[i].top + h - offsY);
} }
if (_r2 === i) { if (_r2 === i) {
bi = arrBottomS.length - 1; bi = arrBottomS.length - 1;
} }
} }
h = t.drawingCtx.getHeight(); h = t.drawingCtx.getHeight();
if (arrBottomS[arrBottomS.length - 1] > h) { if (arrBottomS[arrBottomS.length - 1] > h) {
arrBottomS[arrBottomS.length - 1] = h; arrBottomS[arrBottomS.length - 1] = h;
} }
return {l: arrLeftS, r: arrRightS, b: arrBottomS, cellX: cellX, cellY: cellY, ri: ri, bi: bi}; return {l: arrLeftS, r: arrRightS, b: arrBottomS, cellX: cellX, cellY: cellY, ri: ri, bi: bi};
} }
}); });
return true; return true;
}; };
WorksheetView.prototype.openCellEditorWithText = function (editor, text, cursorPos, isFocus, selectionRange) { WorksheetView.prototype.openCellEditorWithText = function (editor, text, cursorPos, isFocus, selectionRange) {
var t = this; var t = this;
......
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