From 1f6cd3c13190adad877a51d9082987e2841c2221 Mon Sep 17 00:00:00 2001 From: lijinke666 Date: Wed, 11 Dec 2024 14:54:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=9C=A8=E7=BB=B4?= =?UTF-8?q?=E5=80=BC=E7=BC=BA=E5=A4=B1=E5=9C=BA=E6=99=AF=E4=B8=8B=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=95=B0=E6=8D=AE=E5=8D=A0=E4=BD=8D=E7=AC=A6=E6=9C=AA?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miss-dimension-values-spec.ts.snap | 10 +++++----- .../unit/data-set/pivot-data-set-spec.ts | 2 ++ .../s2-core/__tests__/unit/utils/text-spec.ts | 19 ++++++++++++++++++- .../s2-core/src/data-set/base-data-set.ts | 8 ++++++-- packages/s2-core/src/utils/export/method.ts | 4 +++- 5 files changed, 34 insertions(+), 9 deletions(-) diff --git a/packages/s2-core/__tests__/spreadsheet/__snapshots__/miss-dimension-values-spec.ts.snap b/packages/s2-core/__tests__/spreadsheet/__snapshots__/miss-dimension-values-spec.ts.snap index 3c0793b6c4..7bfa7ddc92 100644 --- a/packages/s2-core/__tests__/spreadsheet/__snapshots__/miss-dimension-values-spec.ts.snap +++ b/packages/s2-core/__tests__/spreadsheet/__snapshots__/miss-dimension-values-spec.ts.snap @@ -21,19 +21,19 @@ exports[`Miss Dimension Values Tests should replace empty dimension value placeh exports[`Miss Dimension Values Tests should replace empty dimension value placeholder when copy original data 1`] = ` "first second third number -总计 $$empty_field_value$$ $$empty_field_value$$ 1732771 +总计 - - 1732771 维值-1 维值-2 维度-3 12222 维值-1 维值-3 维值-3 11111 维值-1 维值-3 维度-3 11111 维值-1 维值-3 小计 维值-1 小计 456 测试-1 测试-2 维度-3 4444567 -测试-1 测试-3 $$empty_field_value$$ 785222 +测试-1 测试-3 - 785222 测试-1 测试-4 维度-3 6455644 测试-1 测试-5 维度-3 1111 测试-1 小计 125555 -测试-6 测试-x $$empty_field_value$$ 111111 -测试-6 测试-7 $$empty_field_value$$ 67878 -测试-6 测试-8 $$empty_field_value$$ 456.464 +测试-6 测试-x - 111111 +测试-6 测试-7 - 67878 +测试-6 测试-8 - 456.464 测试-6 小计 123.416" `; diff --git a/packages/s2-core/__tests__/unit/data-set/pivot-data-set-spec.ts b/packages/s2-core/__tests__/unit/data-set/pivot-data-set-spec.ts index f9ae37178e..55568e80e5 100644 --- a/packages/s2-core/__tests__/unit/data-set/pivot-data-set-spec.ts +++ b/packages/s2-core/__tests__/unit/data-set/pivot-data-set-spec.ts @@ -26,6 +26,7 @@ import { totalData as drillDownTotalData, } from 'tests/data/mock-drill-down-dataset.json'; import { assembleDataCfg } from 'tests/util'; +import { EMPTY_FIELD_VALUE } from '../../../src'; jest.mock('@/sheet-type'); @@ -510,6 +511,7 @@ describe('Pivot Dataset Test', () => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore expect(dataSet.getFieldName(['1'])).toEqual(['1']); + expect(dataSet.getFieldName(EMPTY_FIELD_VALUE)).toStrictEqual('-'); }); test('should return correct field meta', () => { diff --git a/packages/s2-core/__tests__/unit/utils/text-spec.ts b/packages/s2-core/__tests__/unit/utils/text-spec.ts index 960a86fae7..aa084ce7a9 100644 --- a/packages/s2-core/__tests__/unit/utils/text-spec.ts +++ b/packages/s2-core/__tests__/unit/utils/text-spec.ts @@ -1,4 +1,4 @@ -import { ELLIPSIS_SYMBOL } from '@/common'; +import { ELLIPSIS_SYMBOL, EMPTY_FIELD_VALUE } from '@/common'; import { drawCustomContent, getCellWidth, @@ -8,6 +8,7 @@ import { isUnchangedValue, isUpDataValue, isZeroOrEmptyValue, + replaceEmptyFieldValue, } from '@/utils/text'; import { createFakeSpreadSheet, @@ -385,3 +386,19 @@ describe('getDisplayText', () => { expect(getDisplayText(value, '@')).toEqual(result); }); }); + +describe('replaceEmptyFieldValue', () => { + test.each` + value | result + ${'value'} | ${'value'} + ${EMPTY_FIELD_VALUE} | ${'-'} + ${undefined} | ${undefined} + ${0} | ${0} + ${NaN} | ${NaN} + `( + 'should get correct empty field display value for $value', + ({ value, result }) => { + expect(replaceEmptyFieldValue(value)).toEqual(result); + }, + ); +}); diff --git a/packages/s2-core/src/data-set/base-data-set.ts b/packages/s2-core/src/data-set/base-data-set.ts index ae29e5e356..7287273809 100644 --- a/packages/s2-core/src/data-set/base-data-set.ts +++ b/packages/s2-core/src/data-set/base-data-set.ts @@ -37,7 +37,11 @@ import { } from '../utils/condition/state-controller'; import { generateExtraFieldMeta } from '../utils/dataset/pivot-data-set'; import type { Indexes } from '../utils/indexes'; -import { getDisplayText, getEmptyPlaceholder } from '../utils/text'; +import { + getDisplayText, + getEmptyPlaceholder, + replaceEmptyFieldValue, +} from '../utils/text'; import type { GetCellMultiDataParams } from './index'; import type { GetCellDataParams, Query } from './interface'; @@ -145,7 +149,7 @@ export abstract class BaseDataSet { return get( this.getFieldMeta(realField, this.meta), 'name', - defaultValue ?? realDefaultValue, + replaceEmptyFieldValue(defaultValue ?? realDefaultValue), ); } diff --git a/packages/s2-core/src/utils/export/method.ts b/packages/s2-core/src/utils/export/method.ts index 16a7e8bb50..1437cb3f18 100644 --- a/packages/s2-core/src/utils/export/method.ts +++ b/packages/s2-core/src/utils/export/method.ts @@ -14,6 +14,7 @@ import { import type { Node } from '../../facet/layout/node'; import type { SpreadSheet } from '../../sheet-type'; import { resolveNillString } from '../layout'; +import { replaceEmptyFieldValue } from '../text'; export function keyEqualTo(key: string, compareKey: string) { if (!key || !compareKey) { @@ -64,8 +65,9 @@ export const getHeaderMeasureFieldNames = ( } // https://github.com/antvis/S2/issues/2688 + // https://github.com/antvis/S2/pull/2829 if (!formatHeader) { - return resolveNillString(field); + return replaceEmptyFieldValue(resolveNillString(field)!); } return spreadsheet.dataSet.getFieldName(field);