From 5c3ecc4053b2bdc95d2372c96ea3470b32a57e49 Mon Sep 17 00:00:00 2001 From: Dmitriy Orlov Date: Mon, 10 Feb 2025 13:09:34 +0000 Subject: [PATCH] [se] Fix bug 61855 (#590) [se] Fix bug 61855 Co-authored-by: Dmitriy Orlov Co-committed-by: Dmitriy Orlov --- cell/view/WorkbookView.js | 11 ++++++----- .../spreadsheet-calculation/SheetStructureTests.js | 11 +++++++++++ 2 files changed, 17 insertions(+), 5 deletions(-) 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) {