diff --git a/cell/view/WorkbookView.js b/cell/view/WorkbookView.js index 45ded79f66..e15fad4b76 100644 --- a/cell/view/WorkbookView.js +++ b/cell/view/WorkbookView.js @@ -3244,16 +3244,17 @@ this.cellEditor.changeCellText(sArguments); if (name) { - - var res = new AscCommonExcel.CFunctionInfo(name); + let res = new AscCommonExcel.CFunctionInfo(name); if (needChange) { res.asc_setArguments(args); } res.argumentsResult = []; - var argCalc = ws.calculateWizardFormula(args[argNum], argType); + let argCalc = ws.calculateWizardFormula(args[argNum], argType); res.argumentsResult[argNum] = argCalc.str; - if (argCalc.obj && argCalc.obj.type !== AscCommonExcel.cElementType.error) { - var funcCalc = ws.calculateWizardFormula(name + '(' + sArguments + ')'); + //second condition: if we haven't received the formulaResult, calculate with those arguments that exist in the array + if ((argCalc.obj && argCalc.obj.type !== AscCommonExcel.cElementType.error) || + (argCalc.obj === null && res && !res.functionResult && args && sArguments)) { + let funcCalc = ws.calculateWizardFormula(name + '(' + sArguments + ')'); res.functionResult = funcCalc.str; if (funcCalc.obj && funcCalc.obj.type !== AscCommonExcel.cElementType.error) { res.formulaResult = ws.calculateWizardFormula(this.cellEditor.getText().substring(1)).str; diff --git a/tests/cell/spreadsheet-calculation/SheetStructureTests.js b/tests/cell/spreadsheet-calculation/SheetStructureTests.js index d2a314ea1d..0aec36d8a1 100644 --- a/tests/cell/spreadsheet-calculation/SheetStructureTests.js +++ b/tests/cell/spreadsheet-calculation/SheetStructureTests.js @@ -3337,6 +3337,17 @@ $(function () { wb.dependencyFormulas._foreachDefName(function(defName) { wb.dependencyFormulas.removeDefName(undefined, defName.name); }); + + // for bug 61855 + let insertArgsRes = api.wb.insertArgumentsInFormula(["1"], 0, 0, "SUM", true/*bEndInsertArg*/); + assert.strictEqual(insertArgsRes && insertArgsRes.functionResult, "1", "Calculation result for SUM function when insert first argument in formula"); + + insertArgsRes = api.wb.insertArgumentsInFormula(["1,2"], 1, 0, "SUM", true); + assert.strictEqual(insertArgsRes && insertArgsRes.functionResult, "3", "Calculation result for SUM function when insert second argument in formula"); + + insertArgsRes = api.wb.insertArgumentsInFormula(["1"], 1, 0, "SUM", true); + assert.strictEqual(insertArgsRes && insertArgsRes.functionResult, "1", "Calculation result for SUM function when delete second argument in formula"); + }); QUnit.test('autoCompleteFormula', function (assert) {