Skip to content

Commit

Permalink
fix: 修复明细表导出时自定义序号文本不生效 close #2755 (#2757)
Browse files Browse the repository at this point in the history
* fix: 修复明细表导出时自定义序号文本不生效 close #2755

* fix: 增加 getSeriesNumberText, 减少模版代码

* test: 单测修复

* test: 单测修复
  • Loading branch information
lijinke666 authored May 31, 2024
1 parent 43cf364 commit ebe68d8
Show file tree
Hide file tree
Showing 19 changed files with 314 additions and 56 deletions.
10 changes: 8 additions & 2 deletions packages/s2-core/__tests__/unit/data-set/pivot-data-set-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,17 @@ import {
totalData as drillDownTotalData,
} from 'tests/data/mock-drill-down-dataset.json';
import { data } from 'tests/data/mock-dataset.json';

import type {
ViewMeta,
SortMethod,
CustomHeaderField,
} from '@/common/interface';
import { EXTRA_FIELD, ORIGIN_FIELD, TOTAL_VALUE } from '@/common/constant';
import {
EXTRA_FIELD,
ORIGIN_FIELD,
TOTAL_VALUE,
SERIES_NUMBER_FIELD,
} from '@/common/constant';
import type { S2DataConfig } from '@/common/interface';
import { PivotSheet } from '@/sheet-type';
import { PivotDataSet } from '@/data-set/pivot-data-set';
Expand Down Expand Up @@ -45,6 +49,7 @@ describe('Pivot Dataset Test', () => {

mockSheet.store = new Store();
mockSheet.interaction = new MockRootInteraction(mockSheet);
mockSheet.getSeriesNumberText = () => '序号';
dataSet = new PivotDataSet(mockSheet);
dataSet.setDataCfg(dataCfg);
});
Expand Down Expand Up @@ -483,6 +488,7 @@ describe('Pivot Dataset Test', () => {
expect(dataSet.getFieldName('not-found-field')).toEqual(
'not-found-field',
);
expect(dataSet.getFieldName(SERIES_NUMBER_FIELD)).toStrictEqual('序号');
// 异常情况
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
Expand Down
13 changes: 8 additions & 5 deletions packages/s2-core/__tests__/unit/data-set/table-data-set-spec.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
/**
* table mode data-set test.
*/
import { assembleDataCfg } from 'tests/util';
import type { S2DataConfig } from '@/common/interface';
import { type S2DataConfig, SERIES_NUMBER_FIELD } from '@/common';
import { SpreadSheet, TableSheet } from '@/sheet-type';
import { TableDataSet } from '@/data-set/table-data-set';

jest.mock('@/sheet-type');
jest.mock('@/facet/layout/node');

const MockTableSheet = TableSheet as any as jest.Mock<TableSheet>;

describe('Table Mode Dataset Test', () => {
Expand Down Expand Up @@ -63,6 +61,7 @@ describe('Table Mode Dataset Test', () => {
MockTableSheet.mockClear();

s2 = new MockTableSheet();
s2.getSeriesNumberText = () => '序号';
dataSet = new TableDataSet(s2);

dataSet.setDataCfg(dataCfg);
Expand All @@ -77,7 +76,7 @@ describe('Table Mode Dataset Test', () => {
${'city'} | ${'城市'} | ${'城市描述'} | ${mockCityFormatter}
${'type'} | ${'类型'} | ${'类型描述'} | ${mockTypeFormatter}
${'sub_type'} | ${'子类型'} | ${'子类型描述'} | ${mockSubTypeFormatter}
${'number'} | ${'数量'} | ${'数量描述'} | ${mockProvinceFormatter}
${'number'} | ${'数量'} | ${'数量描述'} | ${mockNumberFormatter}
`(
'should return correct filed meta when field=$field',
({ field, name, description }) => {
Expand All @@ -86,6 +85,10 @@ describe('Table Mode Dataset Test', () => {
expect(dataSet.getFieldFormatter(field)(null)).toStrictEqual(field);
},
);

test('should get series number field name', () => {
expect(dataSet.getFieldName(SERIES_NUMBER_FIELD)).toStrictEqual('序号');
});
});

describe('test base dataset structure', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ describe('Corner Tests', () => {
});

test('should get custom series number text', () => {
s2.options.seriesNumber!.text = 'test';
s2.getSeriesNumberText = () => 'test';
const cornerNode = createCornerNode();

expect(cornerNode.value).toEqual('test');
Expand Down
3 changes: 2 additions & 1 deletion packages/s2-core/__tests__/unit/facet/pivot-facet-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { Canvas, Group, Rect, type CanvasConfig } from '@antv/g';
import { Renderer } from '@antv/g-canvas';
import { find, size } from 'lodash';
import { assembleDataCfg, assembleOptions } from 'tests/util';
import { FrozenGroupType } from '../../../src';
import { FrozenGroupType, getDefaultSeriesNumberText } from '../../../src';
import { createFakeSpreadSheet } from '../../util/helpers';
import { getMockPivotMeta } from './util';
import { CornerCell, DataCell } from '@/cell';
Expand Down Expand Up @@ -105,6 +105,7 @@ jest.mock('@/sheet-type', () => {
enableFrozenHeaders() {
return true;
},
getSeriesNumberText: jest.fn(() => getDefaultSeriesNumberText()),
};
}),
};
Expand Down
24 changes: 2 additions & 22 deletions packages/s2-core/__tests__/unit/facet/table-facet-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { assembleDataCfg, assembleOptions } from 'tests/util';
import { pick } from 'lodash';
import { data } from '../../data/mock-dataset.json';
import { createFakeSpreadSheet } from '../../util/helpers';
import { getDefaultSeriesNumberText } from '../../../src';
import { LayoutWidthType, ROOT_NODE_ID } from '@/common/constant';
import { Store } from '@/common/store';
import { TableDataSet } from '@/data-set/table-data-set';
Expand Down Expand Up @@ -86,6 +87,7 @@ jest.mock('@/sheet-type', () => {
isCustomColumnFields: jest.fn(),
measureTextWidthRoughly: jest.fn(),
measureTextWidth: jest.fn(),
getSeriesNumberText: jest.fn(() => getDefaultSeriesNumberText()),
};
}),
};
Expand Down Expand Up @@ -156,28 +158,6 @@ describe('Table Mode Facet Test', () => {
expect(rowsHierarchy.getIndexNodes()).toHaveLength(0);
});

test('should get default seriesNumberText', () => {
const { facet } = createMockTableFacet({
seriesNumber: {
enable: true,
},
});

expect(facet.getColLeafNodes()[0].value).toEqual('序号');
});

test('should get custom seriesNumberText', () => {
const seriesNumberText = 'test';
const { facet } = createMockTableFacet({
seriesNumber: {
enable: true,
text: seriesNumberText,
},
});

expect(facet.getColLeafNodes()[0].value).toEqual(seriesNumberText);
});

describe('should get none layer when dataCfg.fields is empty', () => {
const spreadsheet = createFakeSpreadSheet({
s2DataConfig: {
Expand Down
21 changes: 21 additions & 0 deletions packages/s2-core/__tests__/unit/sheet-type/pivot-sheet-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -479,6 +479,27 @@ describe('PivotSheet Tests', () => {
expect(s2.options.seriesNumber?.enable).toBeTruthy();
});

test.each([
{
enable: true,
text: '测试',
result: '测试',
},
{
enable: false,
text: '测试',
result: '',
},
])(
'should get correctly series number text by %o',
({ result, ...options }) => {
s2.setOptions({
seriesNumber: options,
});
expect(s2.getSeriesNumberText()).toEqual(result);
},
);

test('should init new tooltip', () => {
const tooltipDestroySpy = jest
.spyOn(s2.tooltip, 'destroy')
Expand Down
21 changes: 21 additions & 0 deletions packages/s2-core/__tests__/unit/sheet-type/table-sheet-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,27 @@ describe('TableSheet Tests', () => {
);
});

test.each([
{
enable: true,
text: '测试',
result: '测试',
},
{
enable: false,
text: '测试',
result: '',
},
])(
'should get correctly series number text by %o',
({ result, ...options }) => {
s2.setOptions({
seriesNumber: options,
});
expect(s2.getSeriesNumberText()).toEqual(result);
},
);

test('should get normal header fields status', () => {
expect(s2.isCustomHeaderFields()).toBeFalsy();
expect(s2.isCustomRowFields()).toBeFalsy();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,168 @@ exports[`TableSheet Export Test should export correct data with totals 1`] = `
浙江省-province 家具-type 沙发 5343"
`;

exports[`TableSheet Export Test should export correctly data for custom series number text by { formatHeader: true } 1`] = `
"测试 省份 城市 类别 子类别 数量
1 浙江省 杭州市 家具 桌子 7789
2 浙江省 绍兴市 家具 桌子 2367
3 浙江省 宁波市 家具 桌子 3877
4 浙江省 舟山市 家具 桌子 4342
5 浙江省 杭州市 家具 沙发 5343
6 浙江省 绍兴市 家具 沙发 632
7 浙江省 宁波市 家具 沙发 7234
8 浙江省 舟山市 家具 沙发 834
9 浙江省 杭州市 办公用品 笔 945
10 浙江省 绍兴市 办公用品 笔 1304
11 浙江省 宁波市 办公用品 笔 1145
12 浙江省 舟山市 办公用品 笔 1432
13 浙江省 杭州市 办公用品 纸张 1343
14 浙江省 绍兴市 办公用品 纸张 1354
15 浙江省 宁波市 办公用品 纸张 1523
16 浙江省 舟山市 办公用品 纸张 1634
17 四川省 成都市 家具 桌子 1723
18 四川省 绵阳市 家具 桌子 1822
19 四川省 南充市 家具 桌子 1943
20 四川省 乐山市 家具 桌子 2330
21 四川省 成都市 家具 沙发 2451
22 四川省 绵阳市 家具 沙发 2244
23 四川省 南充市 家具 沙发 2333
24 四川省 乐山市 家具 沙发 2445
25 四川省 成都市 办公用品 笔 2335
26 四川省 绵阳市 办公用品 笔 245
27 四川省 南充市 办公用品 笔 2457
28 四川省 乐山市 办公用品 笔 2458
29 四川省 成都市 办公用品 纸张 4004
30 四川省 绵阳市 办公用品 纸张 3077
31 四川省 南充市 办公用品 纸张 3551
32 四川省 乐山市 办公用品 纸张 352
33 家具 桌子 26193
34 家具 49709
35 家具 沙发 23516
36 办公用品 29159
37 办公用品 笔 12321
38 办公用品 纸张 16838
39 浙江省 家具 桌子 18375
40 浙江省 家具 沙发 14043
41 浙江省 办公用品 笔 4826
42 浙江省 办公用品 纸张 5854
43 四川省 家具 桌子 7818
44 四川省 家具 沙发 9473
45 四川省 办公用品 笔 7495
46 四川省 办公用品 纸张 10984
47 浙江省 杭州市 家具 13132
48 浙江省 杭州市 办公用品 2288
49 浙江省 杭州市 15420
50 浙江省 绍兴市 家具 2999
51 浙江省 绍兴市 办公用品 2658
52 浙江省 绍兴市 5657
53 浙江省 宁波市 家具 11111
54 浙江省 宁波市 办公用品 2668
55 浙江省 宁波市 13779
56 浙江省 舟山市 家具 5176
57 浙江省 舟山市 办公用品 3066
58 浙江省 舟山市 8242
59 四川省 成都市 家具 4174
60 四川省 成都市 办公用品 6339
61 四川省 成都市 10513
62 四川省 绵阳市 家具 4066
63 四川省 绵阳市 办公用品 3322
64 四川省 绵阳市 7388
65 四川省 南充市 家具 4276
66 四川省 南充市 办公用品 6008
67 四川省 南充市 10284
68 四川省 乐山市 家具 4775
69 四川省 乐山市 办公用品 2810
70 四川省 乐山市 7585
71 浙江省 家具 32418
72 浙江省 办公用品 10680
73 浙江省 43098
74 四川省 家具 17291
75 四川省 办公用品 18479
76 四川省 35770
77 78868"
`;

exports[`TableSheet Export Test should export correctly data for default series number text by { formatHeader: false } 1`] = `
"序号 province city type sub_type number
1 浙江省 杭州市 家具 桌子 7789
2 浙江省 绍兴市 家具 桌子 2367
3 浙江省 宁波市 家具 桌子 3877
4 浙江省 舟山市 家具 桌子 4342
5 浙江省 杭州市 家具 沙发 5343
6 浙江省 绍兴市 家具 沙发 632
7 浙江省 宁波市 家具 沙发 7234
8 浙江省 舟山市 家具 沙发 834
9 浙江省 杭州市 办公用品 笔 945
10 浙江省 绍兴市 办公用品 笔 1304
11 浙江省 宁波市 办公用品 笔 1145
12 浙江省 舟山市 办公用品 笔 1432
13 浙江省 杭州市 办公用品 纸张 1343
14 浙江省 绍兴市 办公用品 纸张 1354
15 浙江省 宁波市 办公用品 纸张 1523
16 浙江省 舟山市 办公用品 纸张 1634
17 四川省 成都市 家具 桌子 1723
18 四川省 绵阳市 家具 桌子 1822
19 四川省 南充市 家具 桌子 1943
20 四川省 乐山市 家具 桌子 2330
21 四川省 成都市 家具 沙发 2451
22 四川省 绵阳市 家具 沙发 2244
23 四川省 南充市 家具 沙发 2333
24 四川省 乐山市 家具 沙发 2445
25 四川省 成都市 办公用品 笔 2335
26 四川省 绵阳市 办公用品 笔 245
27 四川省 南充市 办公用品 笔 2457
28 四川省 乐山市 办公用品 笔 2458
29 四川省 成都市 办公用品 纸张 4004
30 四川省 绵阳市 办公用品 纸张 3077
31 四川省 南充市 办公用品 纸张 3551
32 四川省 乐山市 办公用品 纸张 352
33 家具 桌子 26193
34 家具 49709
35 家具 沙发 23516
36 办公用品 29159
37 办公用品 笔 12321
38 办公用品 纸张 16838
39 浙江省 家具 桌子 18375
40 浙江省 家具 沙发 14043
41 浙江省 办公用品 笔 4826
42 浙江省 办公用品 纸张 5854
43 四川省 家具 桌子 7818
44 四川省 家具 沙发 9473
45 四川省 办公用品 笔 7495
46 四川省 办公用品 纸张 10984
47 浙江省 杭州市 家具 13132
48 浙江省 杭州市 办公用品 2288
49 浙江省 杭州市 15420
50 浙江省 绍兴市 家具 2999
51 浙江省 绍兴市 办公用品 2658
52 浙江省 绍兴市 5657
53 浙江省 宁波市 家具 11111
54 浙江省 宁波市 办公用品 2668
55 浙江省 宁波市 13779
56 浙江省 舟山市 家具 5176
57 浙江省 舟山市 办公用品 3066
58 浙江省 舟山市 8242
59 四川省 成都市 家具 4174
60 四川省 成都市 办公用品 6339
61 四川省 成都市 10513
62 四川省 绵阳市 家具 4066
63 四川省 绵阳市 办公用品 3322
64 四川省 绵阳市 7388
65 四川省 南充市 家具 4276
66 四川省 南充市 办公用品 6008
67 四川省 南充市 10284
68 四川省 乐山市 家具 4775
69 四川省 乐山市 办公用品 2810
70 四川省 乐山市 7585
71 浙江省 家具 32418
72 浙江省 办公用品 10680
73 浙江省 43098
74 四川省 家具 17291
75 四川省 办公用品 18479
76 四川省 35770
77 78868"
`;

exports[`TableSheet Export Test should export correctly data for single row data by { async: false } 1`] = `
Array [
"province city type price cost",
Expand Down
Loading

0 comments on commit ebe68d8

Please sign in to comment.