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

ToDo check brackets and , (comma) Union operator, which combines multiple...

ToDo check brackets and , (comma) Union operator, which combines multiple references into one reference in formula parser
parent c35941fa
......@@ -2040,12 +2040,12 @@ var editor;
}
var ws = this.wb.getWorksheet();
var d = ws.findCell(reference, this.isViewMode);
if (!d) {
if (0 === d.length) {
return;
}
// Получаем sheet по имени
ws = d.getWorksheet();
ws = d[0].getWorksheet();
if (!ws || ws.getHidden()) {
return;
}
......@@ -2060,7 +2060,7 @@ var editor;
}
ws = this.wb.getWorksheet();
d = ws.setSelectionUndoRedo(d.getBBox0(), true);
d = ws.setSelectionUndoRedo(d[0].getBBox0(), true);
if (d.deltaX) {
this.controller.scrollHorizontal(d.deltaX);
}
......
......@@ -2966,30 +2966,39 @@ var cFormulaOperators = {
return list;
}
function getRangeByRef(ref, ws) {
var range = null;
var _f = new AscCommonExcel.parserFormula(ref, '', ws);
_f.parse();
_f.RefPos.some(function (item) {
var ref;
switch (item.oper.type) {
case cElementType.table:
case cElementType.name:
ref = item.oper.toRef();
break;
case cElementType.cell:
case cElementType.cell3D:
case cElementType.cellsRange:
case cElementType.cellsRange3D:
ref = item.oper;
break;
}
if (ref && cElementType.error !== ref.type) {
range = ref.getRange();
return true;
}
return false;
// ToDo in parser formula
if (ref[0] === '(') {
ref = ref.slice(1);
}
if (ref[ref.length - 1] === ')') {
ref = ref.slice(0, -1);
}
// ToDo in parser formula
var ranges = [];
var arrRefs = ref.split(',');
arrRefs.forEach(function (refItem) {
var _f = new AscCommonExcel.parserFormula(refItem, '', ws);
_f.parse();
_f.RefPos.forEach(function (item) {
var ref;
switch (item.oper.type) {
case cElementType.table:
case cElementType.name:
ref = item.oper.toRef();
break;
case cElementType.cell:
case cElementType.cell3D:
case cElementType.cellsRange:
case cElementType.cellsRange3D:
ref = item.oper;
break;
}
if (ref && cElementType.error !== ref.type) {
ranges.push(ref.getRange());
}
});
});
return range;
return ranges;
}
/*--------------------------------------------------------------------------*/
......
......@@ -10577,9 +10577,9 @@
};
WorksheetView.prototype.findCell = function (reference, isViewMode) {
var mc, range = AscCommonExcel.getRangeByRef(reference, this.model);
var mc, ranges = AscCommonExcel.getRangeByRef(reference, this.model);
if (!range && !isViewMode) {
if (0 < ranges.length && !isViewMode) {
/*TODO: сделать поиск по названиям автофигур, должен искать до того как вызвать поиск по именованным диапазонам*/
if (this.collaborativeEditing.getGlobalLock() || !this.handlers.trigger("getLockDefNameManagerStatus")) {
this.handlers.trigger("onErrorEvent", c_oAscError.ID.LockCreateDefName, c_oAscError.Level.NoCritical);
......@@ -10601,7 +10601,7 @@
c_oAscError.Level.NoCritical);
}
}
return range;
return ranges;
};
/* Ищет дополнение для ячейки */
......
......@@ -2611,8 +2611,6 @@ function DrawingObjects() {
{
var cache = ref.numCache ? ref.numCache : (ref.strCache ? ref.strCache : null);
var lit_format_code;
var bNum = AscCommon.isRealObject(ref.numCache);
var sValue = "";
if(cache)
{
......@@ -2733,8 +2731,6 @@ function DrawingObjects() {
}
}
}
}
var first_num_ref;
......
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