Commit 5b202597 authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov

Добавил ограничение на число символов в ячейке. bug #29043

ToDo учитывать удаляемые символы

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@61989 954022d7-b5bf-4e40-9824-e11837661b57
parent d796014f
...@@ -511,72 +511,77 @@ ...@@ -511,72 +511,77 @@
}; };
CellEditor.prototype.pasteText = function (text) { CellEditor.prototype.pasteText = function (text) {
var t = this;
text = text.replace(/\t/g," "); text = text.replace(/\t/g," ");
text = text.replace(/\r/g, ""); text = text.replace(/\r/g, "");
text = text.replace(/^\n+|\n+$/g, ""); text = text.replace(/^\n+|\n+$/g, "");
var wrap = text.indexOf("\n") >= 0;
if (!(text.length > 0)) {return;} var length = text.length;
if (!(length > 0)) {return;}
// Ограничение на ввод (ToDo учитывать удаляемые символы)
if (this._getFragmentsLength(this.options.fragments) + length > c_oAscMaxCellOrCommentLength)
return false;
if (t.selectionBegin !== t.selectionEnd) var wrap = text.indexOf("\n") >= 0;
t._removeChars(); if (this.selectionBegin !== this.selectionEnd)
this._removeChars();
else else
t.undoList.push({fn: "fake", args: []});//фейковый undo(потому что у нас делает undo по 2 действия) this.undoList.push({fn: "fake", args: []});//фейковый undo(потому что у нас делает undo по 2 действия)
// save info to undo/redo // save info to undo/redo
t.undoList.push({fn: t._removeChars, args: [t.cursorPos, text.length]}); this.undoList.push({fn: this._removeChars, args: [this.cursorPos, length]});
t.redoList = []; this.redoList = [];
var opt = t.options; var opt = this.options;
var nInsertPos = t.cursorPos; var nInsertPos = this.cursorPos;
var fr; var fr;
fr = t._findFragmentToInsertInto(nInsertPos - (nInsertPos > 0 ? 1 : 0)); fr = this._findFragmentToInsertInto(nInsertPos - (nInsertPos > 0 ? 1 : 0));
if (fr) { if (fr) {
var oCurFragment = opt.fragments[fr.index]; var oCurFragment = opt.fragments[fr.index];
if(fr.end <= nInsertPos) if(fr.end <= nInsertPos)
oCurFragment.text += text; oCurFragment.text += text;
else else {
{
var sNewText = oCurFragment.text.substring(0, nInsertPos); var sNewText = oCurFragment.text.substring(0, nInsertPos);
sNewText += text; sNewText += text;
sNewText += oCurFragment.text.substring(nInsertPos); sNewText += oCurFragment.text.substring(nInsertPos);
oCurFragment.text = sNewText; oCurFragment.text = sNewText;
} }
t.cursorPos = nInsertPos + text.length; this.cursorPos = nInsertPos + length;
t._update(); this._update();
} }
if (wrap) { if (wrap) {
t._wrapText(); this._wrapText();
t._update(); this._update();
} }
}; };
CellEditor.prototype.paste = function (fragments, cursorPos) { CellEditor.prototype.paste = function (fragments, cursorPos) {
var t = this; if (!(fragments.length > 0)) {return;}
var wrap = fragments.some(function(val){return val.text.indexOf("\n")>=0;}); var length = this._getFragmentsLength(fragments);
// Ограничение на ввод (ToDo учитывать удаляемые символы)
if (this._getFragmentsLength(this.options.fragments) + length > c_oAscMaxCellOrCommentLength)
return false;
t._cleanFragments(fragments); var wrap = fragments.some(function(val){return val.text.indexOf("\n")>=0;});
if (!(fragments.length > 0)) {return;} this._cleanFragments(fragments);
if (t.selectionBegin !== t.selectionEnd) {t._removeChars();} if (this.selectionBegin !== this.selectionEnd) {this._removeChars();}
// save info to undo/redo // save info to undo/redo
t.undoList.push({fn: t._removeChars, args: [t.cursorPos, t._getFragmentsLength(fragments)]}); this.undoList.push({fn: this._removeChars, args: [this.cursorPos, length]});
t.redoList = []; this.redoList = [];
t._addFragments(fragments, t.cursorPos); this._addFragments(fragments, this.cursorPos);
if (wrap) { if (wrap) {
t._wrapText(); this._wrapText();
t._update(); this._update();
} }
// Сделано только для вставки формулы в ячейку (когда не открыт редактор) // Сделано только для вставки формулы в ячейку (когда не открыт редактор)
if (undefined !== cursorPos) if (undefined !== cursorPos)
t._moveCursor(kPosition, cursorPos); this._moveCursor(kPosition, cursorPos);
}; };
/** @param flag {Boolean} */ /** @param flag {Boolean} */
...@@ -1290,7 +1295,11 @@ ...@@ -1290,7 +1295,11 @@
}; };
CellEditor.prototype._addChars = function (str, pos, isRange) { CellEditor.prototype._addChars = function (str, pos, isRange) {
var opt = this.options, f, l, s; var opt = this.options, f, l, s, length = str.length;
// Ограничение на ввод (ToDo учитывать удаляемые символы)
if (this._getFragmentsLength(this.options.fragments) + length > c_oAscMaxCellOrCommentLength)
return false;
if (this.selectionBegin !== this.selectionEnd) {this._removeChars(undefined, undefined, isRange);} if (this.selectionBegin !== this.selectionEnd) {this._removeChars(undefined, undefined, isRange);}
...@@ -1298,7 +1307,7 @@ ...@@ -1298,7 +1307,7 @@
if (!this.undoMode) { if (!this.undoMode) {
// save info to undo/redo // save info to undo/redo
this.undoList.push({fn: this._removeChars, args: [pos, str.length], isRange: isRange}); this.undoList.push({fn: this._removeChars, args: [pos, length], isRange: isRange});
this.redoList = []; this.redoList = [];
} }
......
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