From d5d03ab051b7a89cd45dda84fac7361efda855fc Mon Sep 17 00:00:00 2001 From: rainy25Ghz <1748420480@qq.com> Date: Fri, 21 Jan 2022 15:25:08 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=E5=85=81=E8=AE=B8=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BC=A0=E5=85=A5=20dimValuesMap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/adjusts/adjust.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/adjusts/adjust.ts b/src/adjusts/adjust.ts index 9d4dc49..36658de 100644 --- a/src/adjusts/adjust.ts +++ b/src/adjusts/adjust.ts @@ -50,12 +50,16 @@ export default abstract class Adjust { /** 宽度比例 */ public columnWidthRatio: number; - constructor(cfg: AdjustCfg) { - const { xField, yField, adjustNames = ['x', 'y'] } = cfg; + /** 用户自定义的dimValuesMap */ + public dimValuesMap: DimValuesMapType; + + constructor(cfg: AdjustCfg & { dimValuesMap?: DimValuesMapType }) { + const { xField, yField, adjustNames = ['x', 'y'], dimValuesMap } = cfg; this.adjustNames = adjustNames; this.xField = xField; this.yField = yField; + this.dimValuesMap = dimValuesMap; } // 需要各自实现的方法 @@ -168,6 +172,12 @@ export default abstract class Adjust { dims.forEach((dim: string): void => { // 在每个维度上,所有的值 dimValuesMap[dim] = _.valuesOfKey(mergedData, dim).sort((v1, v2) => v1 - v2) as number[]; + if (this.dimValuesMap && this.dimValuesMap[dim]) { + if (this.dimValuesMap[dim].length > dimValuesMap[dim].length) { + //确保只有某些类别里没有data时才执行 + dimValuesMap[dim] = this.dimValuesMap[dim]; + } + } }); // 只有一维的情况下,同时调整 y,赋予默认值 From 9c21e39c56713b2aecc23d0f815ed952d326ed49 Mon Sep 17 00:00:00 2001 From: rainy25Ghz <1748420480@qq.com> Date: Fri, 21 Jan 2022 19:28:48 +0800 Subject: [PATCH 2/4] fix: add dimValuesMap argument --- src/adjusts/adjust.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/adjusts/adjust.ts b/src/adjusts/adjust.ts index 36658de..a58b32d 100644 --- a/src/adjusts/adjust.ts +++ b/src/adjusts/adjust.ts @@ -158,7 +158,7 @@ export default abstract class Adjust { private getDimValues(mergedData: Data[]): DimValuesMapType { const { xField, yField } = this; - const dimValuesMap: DimValuesMapType = {}; + const dimValuesMap: DimValuesMapType = _.assign({}, this.dimValuesMap); // 所有的维度 const dims = []; @@ -170,14 +170,13 @@ export default abstract class Adjust { } dims.forEach((dim: string): void => { - // 在每个维度上,所有的值 - dimValuesMap[dim] = _.valuesOfKey(mergedData, dim).sort((v1, v2) => v1 - v2) as number[]; if (this.dimValuesMap && this.dimValuesMap[dim]) { - if (this.dimValuesMap[dim].length > dimValuesMap[dim].length) { - //确保只有某些类别里没有data时才执行 - dimValuesMap[dim] = this.dimValuesMap[dim]; - } + dimValuesMap[dim] = this.dimValuesMap[dim]; + return; } + debugger; + // 在每个维度上,所有的值 + dimValuesMap[dim] = _.valuesOfKey(mergedData, dim).sort((v1, v2) => v1 - v2) as number[]; }); // 只有一维的情况下,同时调整 y,赋予默认值 From 1194e529c403b3b596b16a7c450667c29126b3bd Mon Sep 17 00:00:00 2001 From: rainy25Ghz <1748420480@qq.com> Date: Fri, 21 Jan 2022 19:50:49 +0800 Subject: [PATCH 3/4] fix: add test for dimValuesMap --- src/adjusts/adjust.ts | 1 - tests/unit/jitter-spec.ts | 54 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/adjusts/adjust.ts b/src/adjusts/adjust.ts index a58b32d..4431217 100644 --- a/src/adjusts/adjust.ts +++ b/src/adjusts/adjust.ts @@ -174,7 +174,6 @@ export default abstract class Adjust { dimValuesMap[dim] = this.dimValuesMap[dim]; return; } - debugger; // 在每个维度上,所有的值 dimValuesMap[dim] = _.valuesOfKey(mergedData, dim).sort((v1, v2) => v1 - v2) as number[]; }); diff --git a/tests/unit/jitter-spec.ts b/tests/unit/jitter-spec.ts index d307470..d660750 100644 --- a/tests/unit/jitter-spec.ts +++ b/tests/unit/jitter-spec.ts @@ -48,7 +48,10 @@ describe('adjust jitter', () => { }); describe('adjust one dim.', () => { - const data = [{ a: 0, b: 2, c: 1 }, { a: 0, b: 3, c: 2 }]; + const data = [ + { a: 0, b: 2, c: 1 }, + { a: 0, b: 3, c: 2 }, + ]; let newData; @@ -79,4 +82,53 @@ describe('adjust jitter', () => { expect(obj1.a < 0.95).toBe(true); }); }); + + describe('pass in dimValuesMap', () => { + const data = [ + { a: 1, b: 2, c: 1 }, + { a: 1, b: 3, c: 2 }, + { a: 2, b: 1, c: 1 }, + { a: 2, b: 6, c: 2 }, + { a: 3, b: 5, c: 1 }, + { a: 3, b: 1, c: 2 }, + ]; + + const dimValuesMap={b:[1,2,3,4,5,6]}; + + let newData; + + const adjust = new Jitter({ + xField: 'a', + yField: 'b', + dimValuesMap + }); + + it('is adjust', () => { + expect(adjust.isAdjust('x')).toBe(true); + expect(adjust.isAdjust('y')).toBe(true); + }); + + it('get dim values', () => { + // @ts-ignore + const map = adjust.getDimValues(data); + expect(map.a.length).toBe(3); + expect(map.b.length).toBe(6); + }); + + it('process adjust', () => { + [newData] = adjust.process([data]); + }); + + it('adjust result', () => { + const obj1 = newData[0]; + expect(obj1.b > 1.5).toBe(true); + expect(obj1.b < 2.5).toBe(true); + }); + + it('adjust second', () => { + const obj2 = data[2]; + expect(obj2.b > 0.5).toBe(true); + expect(obj2.b < 1.5).toBe(true); + }); + }); }); From 1b55bf1317eb9afb03b9cf72b039e27f5b424ef3 Mon Sep 17 00:00:00 2001 From: Cappuccino rainy <37009709+rainy-25Ghz@users.noreply.github.com> Date: Sun, 23 Jan 2022 12:25:06 +0800 Subject: [PATCH 4/4] Update adjust.ts --- src/adjusts/adjust.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/adjusts/adjust.ts b/src/adjusts/adjust.ts index 4431217..aee6bd6 100644 --- a/src/adjusts/adjust.ts +++ b/src/adjusts/adjust.ts @@ -170,8 +170,7 @@ export default abstract class Adjust { } dims.forEach((dim: string): void => { - if (this.dimValuesMap && this.dimValuesMap[dim]) { - dimValuesMap[dim] = this.dimValuesMap[dim]; + if (dimValuesMap && dimValuesMap[dim]) { return; } // 在每个维度上,所有的值