From 3337e79005414e3dfc1ed15f65a46ead43b80256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Fri, 7 Jun 2024 16:50:25 +0800 Subject: [PATCH 1/2] fix(umd): change dependency build order for UMD packages (#2449) --- packages/umd/scripts/index.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/umd/scripts/index.mjs b/packages/umd/scripts/index.mjs index 0027660ead5..20b4d58cc32 100644 --- a/packages/umd/scripts/index.mjs +++ b/packages/umd/scripts/index.mjs @@ -167,6 +167,7 @@ function buildJS() { const libs = [ '@univerjs/protocol', '@univerjs/core', + '@univerjs/rpc', '@univerjs/design', '@univerjs/engine-render', '@univerjs/engine-numfmt', @@ -200,7 +201,6 @@ function buildJS() { '@univerjs/docs-drawing-ui', '@univerjs/slides', '@univerjs/slides-ui', - '@univerjs/rpc', '@univerjs/network', '@univerjs/facade', '@univerjs/uniscript', From aa2dc54bd5c22cbdad22f8100a6af6580eb363e0 Mon Sep 17 00:00:00 2001 From: Dushusir <1414556676@qq.com> Date: Fri, 7 Jun 2024 17:30:20 +0800 Subject: [PATCH 2/2] fix(formula): subtotal count --- .../math/subtotal/__tests__/index.spec.ts | 8 +++++-- .../src/functions/math/subtotal/index.ts | 24 +++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/packages/engine-formula/src/functions/math/subtotal/__tests__/index.spec.ts b/packages/engine-formula/src/functions/math/subtotal/__tests__/index.spec.ts index bdec5030b86..9a1282737d0 100644 --- a/packages/engine-formula/src/functions/math/subtotal/__tests__/index.spec.ts +++ b/packages/engine-formula/src/functions/math/subtotal/__tests__/index.spec.ts @@ -275,12 +275,16 @@ describe('Test subtotal', () => { expect(result).toBe(11.157); }); it('Count, Var1 is array, var2 is array', async () => { - const result = await calculate('=SUBTOTAL(2,A1:B2,A3:F4)'); + let result = await calculate('=SUBTOTAL(2,A1:B2,A3:F4)'); expect(result).toBe(10); + result = await calculate('=SUBTOTAL(2,B1:C1)'); + expect(result).toBe(1); }); it('Counta, Var1 is array, var2 is array', async () => { - const result = await calculate('=SUBTOTAL(3,A1:B2,A3:F4)'); + let result = await calculate('=SUBTOTAL(3,A1:B2,A3:F4)'); expect(result).toBe(14); + result = await calculate('=SUBTOTAL(3,B1:C1)'); + expect(result).toBe(2); }); it('Max, Var1 is array, var2 is array', async () => { const result = await calculate('=SUBTOTAL(4,A1:B2,A3:F4)'); diff --git a/packages/engine-formula/src/functions/math/subtotal/index.ts b/packages/engine-formula/src/functions/math/subtotal/index.ts index 71976195fd5..44ed0daf369 100644 --- a/packages/engine-formula/src/functions/math/subtotal/index.ts +++ b/packages/engine-formula/src/functions/math/subtotal/index.ts @@ -84,6 +84,7 @@ export class Subtotal extends BaseFunction { return this._handleSingleObject(functionNum as BaseValueObject, ...refs); } + // eslint-disable-next-line max-lines-per-function, complexity private _handleSingleObject(functionNum: Nullable, ...refs: FunctionVariantType[]) { const indexNum = this._getIndexNumValue(functionNum); let result; @@ -195,13 +196,28 @@ export class Subtotal extends BaseFunction { } private _count(ignoreHidden: boolean, ...refs: FunctionVariantType[]) { - const flattenArray = this._flattenRefArray(ignoreHidden, ...refs); + let accumulatorAll: BaseValueObject = NumberValueObject.create(0); + for (let i = 0; i < refs.length; i++) { + const variant = refs[i]; - if (flattenArray.isError()) { - return flattenArray; + if (!variant.isReferenceObject()) { + return ErrorValueObject.create(ErrorType.VALUE); + } + + const rowData = (variant as BaseReferenceObject).getRowData(); + + (variant as BaseReferenceObject).iterator((valueObject, rowIndex) => { + if (ignoreHidden && this._isRowHidden(rowData, rowIndex)) { + return true; + } + + if (valueObject?.isNumber()) { + accumulatorAll = accumulatorAll.plusBy(1); + } + }); } - return flattenArray.count(); + return accumulatorAll; } private _counta(ignoreHidden: boolean, ...refs: FunctionVariantType[]) {