From 20088aeacef17551b85b8e35a6cee6c56a76d9de Mon Sep 17 00:00:00 2001 From: neuqzxy Date: Tue, 15 Oct 2024 08:19:32 +0000 Subject: [PATCH 1/4] docs: generate changelog of release v0.20.9 --- docs/assets/changelog/en/changelog.md | 26 ++++++++++++++++++++++++++ docs/assets/changelog/zh/changelog.md | 26 ++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/docs/assets/changelog/en/changelog.md b/docs/assets/changelog/en/changelog.md index 85ec76d09..830f86df4 100644 --- a/docs/assets/changelog/en/changelog.md +++ b/docs/assets/changelog/en/changelog.md @@ -1,3 +1,29 @@ +# v0.20.9 + +2024-10-15 + + +**🆕 New feature** + +- **@visactor/vrender-components**: support axis label `firstVisible` in autoHide and linear axis sampling +- **@visactor/vrender-components**: add `interactInvertType` for smartInvert +- **@visactor/vrender-core**: text support keep-all, closed [#1466](https://github.com/VisActor/VRender/issues/1466) + +**🐛 Bug fix** + +- **@visactor/vrender-components**: fix smartInvert when `outsideEnable` is true +- **@visactor/vrender-components**: fix max width of arc label in left +- **@visactor/vrender-components**: fix `pager.space` of discrete legend +- **@visactor/vrender-components**: fix smart invert when only has intercet width base mark +- **@visactor/vrender-components**: fix `legend.item.label.space` when has value +- **@visactor/vrender-components**: legend scroll critical value leads last page not render. fix@VisActor/VChart[#3172](https://github.com/VisActor/VRender/issues/3172) +- **@visactor/vrender-kits**: fix max width of arc label in left +- **@visactor/vrender-core**: fix max width of arc label in left + + + +[more detail about v0.20.9](https://github.com/VisActor/VRender/releases/tag/v0.20.9) + # v0.20.8 2024-09-30 diff --git a/docs/assets/changelog/zh/changelog.md b/docs/assets/changelog/zh/changelog.md index 0488ab7ab..628510c06 100644 --- a/docs/assets/changelog/zh/changelog.md +++ b/docs/assets/changelog/zh/changelog.md @@ -1,3 +1,29 @@ +# v0.20.9 + +2024-10-15 + + +**🆕 新增功能** + +- **@visactor/vrender-components**: support axis label `firstVisible` in autoHide and linear axis sampling +- **@visactor/vrender-components**: add `interactInvertType` for smartInvert +- **@visactor/vrender-core**: text support keep-all, closed [#1466](https://github.com/VisActor/VRender/issues/1466) + +**🐛 功能修复** + +- **@visactor/vrender-components**: fix smartInvert when `outsideEnable` is true +- **@visactor/vrender-components**: fix max width of arc label in left +- **@visactor/vrender-components**: fix `pager.space` of discrete legend +- **@visactor/vrender-components**: fix smart invert when only has intercet width base mark +- **@visactor/vrender-components**: fix `legend.item.label.space` when has value +- **@visactor/vrender-components**: legend scroll critical value leads last page not render. fix@VisActor/VChart[#3172](https://github.com/VisActor/VRender/issues/3172) +- **@visactor/vrender-kits**: fix max width of arc label in left +- **@visactor/vrender-core**: fix max width of arc label in left + + + +[更多详情请查看 v0.20.9](https://github.com/VisActor/VRender/releases/tag/v0.20.9) + # v0.20.8 2024-09-30 From 10a2e9d8947a23dec1e39fd0112d7e6465076794 Mon Sep 17 00:00:00 2001 From: xiaoluoHe Date: Tue, 15 Oct 2024 16:39:35 +0800 Subject: [PATCH 2/4] fix: remove length check for firstVisible --- .../src/axis/overlap/auto-hide.ts | 18 ++++++++++-------- .../src/axis/tick-data/continuous.ts | 8 +++++--- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/vrender-components/src/axis/overlap/auto-hide.ts b/packages/vrender-components/src/axis/overlap/auto-hide.ts index d94534e35..d6ba7622c 100644 --- a/packages/vrender-components/src/axis/overlap/auto-hide.ts +++ b/packages/vrender-components/src/axis/overlap/auto-hide.ts @@ -105,21 +105,23 @@ export function autoHide(labels: IText[], config: HideConfig) { do { items = reduce(items, sep); } while (items.length >= 3 && hasOverlap(items, sep)); - /** - * 0.17.10 之前,当最后label个数小于3 的时候,才做最后的label强制显示的策略 - */ - const shouldCheck = (length: number, visibility: boolean) => length < 3 || visibility; + const shouldCheck = (length: number, visibility: boolean, checkLength: boolean = true) => { + return checkLength ? length < 3 || visibility : visibility; + }; - const checkFirst = shouldCheck(items.length, config.firstVisible); - let checkLast = shouldCheck(items.length, config.lastVisible); + let checkFirst = shouldCheck(items.length, config.firstVisible, false); + /** + * 0.17.10 之前,当最后 label 个数小于 3 的时候,才做最后的label强制显示的策略 + */ + const checkLast = shouldCheck(items.length, config.lastVisible); const firstSourceItem = source[0]; const lastSourceItem = last(source); - if (intersect(firstSourceItem, lastSourceItem, sep)) { + if (intersect(firstSourceItem, lastSourceItem, sep) && checkFirst && checkLast) { lastSourceItem.setAttribute('opacity', 0); // Or firstSourceItem, depending on preference - checkLast = false; + checkFirst = false; } forceItemVisible(firstSourceItem, items, checkFirst, (item: IText) => intersect(item, firstSourceItem, sep)); diff --git a/packages/vrender-components/src/axis/tick-data/continuous.ts b/packages/vrender-components/src/axis/tick-data/continuous.ts index a92fd9541..1c776fceb 100644 --- a/packages/vrender-components/src/axis/tick-data/continuous.ts +++ b/packages/vrender-components/src/axis/tick-data/continuous.ts @@ -158,13 +158,15 @@ export const continuousTicks = (scale: ContinuousScale, op: ITickDataOpt): ITick items = samplingMethod(items, labelGap); } - const shouldCheck = (length: number, visibility: boolean) => length < 3 || visibility; + const shouldCheck = (length: number, visibility: boolean, checkLength: boolean = true) => { + return checkLength ? length < 3 || visibility : visibility; + }; - const checkFirst = shouldCheck(items.length, op.labelFirstVisible); + const checkFirst = shouldCheck(items.length, op.labelFirstVisible, false); let checkLast = shouldCheck(items.length, op.labelLastVisible); if (intersect(firstSourceItem as any, lastSourceItem as any, labelGap)) { - if (items.includes(lastSourceItem) && items.length > 1) { + if (items.includes(lastSourceItem) && items.length > 1 && checkFirst && checkLast) { items.splice(items.indexOf(lastSourceItem), 1); checkLast = false; } From 140d9886df873a97d1e15237a1a20116cb61e306 Mon Sep 17 00:00:00 2001 From: xiaoluoHe Date: Tue, 15 Oct 2024 18:07:00 +0800 Subject: [PATCH 3/4] fix: remove length limit in continous scale sampling --- .../vrender-components/src/axis/tick-data/continuous.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/vrender-components/src/axis/tick-data/continuous.ts b/packages/vrender-components/src/axis/tick-data/continuous.ts index 1c776fceb..b1435d6d5 100644 --- a/packages/vrender-components/src/axis/tick-data/continuous.ts +++ b/packages/vrender-components/src/axis/tick-data/continuous.ts @@ -158,12 +158,8 @@ export const continuousTicks = (scale: ContinuousScale, op: ITickDataOpt): ITick items = samplingMethod(items, labelGap); } - const shouldCheck = (length: number, visibility: boolean, checkLength: boolean = true) => { - return checkLength ? length < 3 || visibility : visibility; - }; - - const checkFirst = shouldCheck(items.length, op.labelFirstVisible, false); - let checkLast = shouldCheck(items.length, op.labelLastVisible); + const checkFirst = op.labelFirstVisible; + let checkLast = op.labelLastVisible; // 这里和 auto-hide 里的逻辑有差异,不根据 length 自动强制显示最后一个(会引起 vtable 较多 badcase)。 if (intersect(firstSourceItem as any, lastSourceItem as any, labelGap)) { if (items.includes(lastSourceItem) && items.length > 1 && checkFirst && checkLast) { From c598fd20beeb53cfb98ab120ff3fd3e454b1103e Mon Sep 17 00:00:00 2001 From: xiaoluoHe Date: Tue, 15 Oct 2024 19:49:51 +0800 Subject: [PATCH 4/4] fix: keep show first --- packages/vrender-components/src/axis/overlap/auto-hide.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/vrender-components/src/axis/overlap/auto-hide.ts b/packages/vrender-components/src/axis/overlap/auto-hide.ts index d6ba7622c..6e42555f5 100644 --- a/packages/vrender-components/src/axis/overlap/auto-hide.ts +++ b/packages/vrender-components/src/axis/overlap/auto-hide.ts @@ -110,18 +110,18 @@ export function autoHide(labels: IText[], config: HideConfig) { return checkLength ? length < 3 || visibility : visibility; }; - let checkFirst = shouldCheck(items.length, config.firstVisible, false); + const checkFirst = shouldCheck(items.length, config.firstVisible, false); /** * 0.17.10 之前,当最后 label 个数小于 3 的时候,才做最后的label强制显示的策略 */ - const checkLast = shouldCheck(items.length, config.lastVisible); + let checkLast = shouldCheck(items.length, config.lastVisible); const firstSourceItem = source[0]; const lastSourceItem = last(source); if (intersect(firstSourceItem, lastSourceItem, sep) && checkFirst && checkLast) { lastSourceItem.setAttribute('opacity', 0); // Or firstSourceItem, depending on preference - checkFirst = false; + checkLast = false; } forceItemVisible(firstSourceItem, items, checkFirst, (item: IText) => intersect(item, firstSourceItem, sep));