From 165f9051db1ef3bd42c01a723ea7caeb89125c35 Mon Sep 17 00:00:00 2001 From: MiniPear Date: Wed, 29 Mar 2023 17:21:14 +0800 Subject: [PATCH 1/2] fix(types): axis for composition --- .../api-chart-change-data-facet.spec.ts | 25 ++++++ .../snapshots/api/chartChangeDataFacet.png | Bin 0 -> 55099 bytes .../plots/api/chart-change-data-facet.ts | 80 ++++++++++++++++++ __tests__/plots/api/index.ts | 1 + src/spec/composition.ts | 13 +-- 5 files changed, 113 insertions(+), 6 deletions(-) create mode 100644 __tests__/integration/api-chart-change-data-facet.spec.ts create mode 100644 __tests__/integration/snapshots/api/chartChangeDataFacet.png create mode 100644 __tests__/plots/api/chart-change-data-facet.ts diff --git a/__tests__/integration/api-chart-change-data-facet.spec.ts b/__tests__/integration/api-chart-change-data-facet.spec.ts new file mode 100644 index 0000000000..7fbffe3c03 --- /dev/null +++ b/__tests__/integration/api-chart-change-data-facet.spec.ts @@ -0,0 +1,25 @@ +import { chartChangeDataFacet as render } from '../plots/api/chart-change-data-facet'; +import { createNodeGCanvas } from './utils/createNodeGCanvas'; +import { sleep } from './utils/sleep'; +import './utils/useSnapshotMatchers'; + +describe('mark.changeSize', () => { + const canvas = createNodeGCanvas(640, 480); + + it('mark.changeSize(width, height) should rerender expected chart', async () => { + const { finished, button, refreshed } = render({ + canvas, + container: document.createElement('div'), + }); + await finished; + button.dispatchEvent(new CustomEvent('click')); + await refreshed; + const dir = `${__dirname}/snapshots/api`; + await sleep(20); + await expect(canvas).toMatchCanvasSnapshot(dir, render.name); + }); + + afterAll(() => { + canvas?.destroy(); + }); +}); diff --git a/__tests__/integration/snapshots/api/chartChangeDataFacet.png b/__tests__/integration/snapshots/api/chartChangeDataFacet.png new file mode 100644 index 0000000000000000000000000000000000000000..c5c29a49e012f0757dd16032e49d9a6b973e64d4 GIT binary patch literal 55099 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 CnoW8D literal 0 HcmV?d00001 diff --git a/__tests__/plots/api/chart-change-data-facet.ts b/__tests__/plots/api/chart-change-data-facet.ts new file mode 100644 index 0000000000..16e0b069bd --- /dev/null +++ b/__tests__/plots/api/chart-change-data-facet.ts @@ -0,0 +1,80 @@ +import { Chart } from '../../../src'; + +export function chartChangeDataFacet(context) { + const { container, canvas } = context; + + const button = document.createElement('button'); + button.innerText = 'Update Data'; + button.style.display = 'block'; + container.appendChild(button); + + const div = document.createElement('div'); + container.appendChild(div); + + const chart = new Chart({ theme: 'classic', container: div, canvas }); + + const view = chart + .facetRect() + .data([ + { name: 'CPU', percent: 27, color: 'rgba(90, 132, 226, 1)' }, + { name: '内存', percent: 81, color: 'rgba(250, 57, 57, 1)' }, + { name: '硬盘', percent: 68, color: 'rgba(253, 192, 45, 1)' }, + ]) + .encode('x', 'name') + .axis(false) + .legend(false) + .view() + .attr('frame', false) + .coordinate({ type: 'radial', innerRadius: 0.7, outerRadius: 0.95 }); + + view + .interval() + .encode('y', 100) + .encode('size', 52) + .scale('y', { zero: true }) + .axis(false) + .style('fill', 'rgba(232, 232, 232, 1)') + .animate(false); + + view + .interval() + .encode('y', 'percent') + .encode('color', 'color') + .encode('size', 80) + .scale('color', { type: 'identity' }) + .tooltip({ name: '已使用', channel: 'y' }) + .axis(false) + .style('radius', 26) + .style('shadowColor', 'color') + .style('shadowBlur', 10) + .style('shadowOffsetX', -1) + .style('shadowOffsetY', -1) + .animate('enter', { type: 'waveIn', duration: 1000 }); + + view + .text() + .encode('text', (d) => `${d.name} ${d.percent}%`) + .style('textAlign', 'center') + .style('textBaseline', 'middle') + .style('fontSize', 15) + .style('color', 'rgba(74, 74, 74, 1)') + .style('x', '50%') + .style('y', '50%'); + + const finished = chart.render(); + + let resolve; + const refreshed = new Promise((r) => (resolve = r)); + + button.onclick = () => { + chart + .changeData([ + { name: 'CPU', percent: 40, color: 'rgba(90, 132, 226, 1)' }, + { name: '内存', percent: 60, color: 'rgba(250, 57, 57, 1)' }, + { name: '硬盘', percent: 20, color: 'rgba(253, 192, 45, 1)' }, + ]) + ?.then(resolve); + }; + + return { chart, button, finished, refreshed }; +} diff --git a/__tests__/plots/api/index.ts b/__tests__/plots/api/index.ts index 8d75dac06f..003de0eb67 100644 --- a/__tests__/plots/api/index.ts +++ b/__tests__/plots/api/index.ts @@ -12,3 +12,4 @@ export { chartOptions } from './chart-options'; export { viewFacetCircle } from './view-facetCircle'; export { chartEmitLegendFilter } from './chart-emit-legend-filter'; export { chartChangeSizePolar } from './chart-change-size-polar'; +export { chartChangeDataFacet } from './chart-change-data-facet'; diff --git a/src/spec/composition.ts b/src/spec/composition.ts index 1ad17db825..ddd822836a 100644 --- a/src/spec/composition.ts +++ b/src/spec/composition.ts @@ -62,6 +62,7 @@ export type ViewComposition = { theme?: Theme; children?: Mark[]; scale?: Record; + frame?: boolean; labelTransform?: LabelTransform[]; // @todo axis?: Record; @@ -141,9 +142,9 @@ export type FacetRectComposition = { shareSize?: boolean; children?: Node[] | ((facet: FacetContext) => Node); // @todo - axis?: Record; + axis?: Record | boolean; // @todo - legend?: Record; + legend?: Record | boolean; }; export type RepeatMatrixComposition = { @@ -172,9 +173,9 @@ export type RepeatMatrixComposition = { color?: Scale; }; // @todo - axis?: Record; + axis?: Record | boolean; // @todo - legend?: Record; + legend?: Record | boolean; children?: Node[] | ((facet: FacetContext) => Node); }; @@ -203,9 +204,9 @@ export type FacetCircleComposition = { }; children?: Node[] | ((facet: FacetContext) => Node); // @todo - axis?: Record; + axis?: Record | boolean; // @todo - legend?: Record; + legend?: Record | boolean; }; export type TimingKeyframeComposition = { From ad7a525235010d181e803dfdb6f25192d2672e08 Mon Sep 17 00:00:00 2001 From: MiniPear Date: Wed, 29 Mar 2023 18:28:14 +0800 Subject: [PATCH 2/2] docs(site): update apple-activity --- .../general/radial/demo/apple-activity.ts | 109 ++++++++---------- 1 file changed, 49 insertions(+), 60 deletions(-) diff --git a/site/examples/general/radial/demo/apple-activity.ts b/site/examples/general/radial/demo/apple-activity.ts index 3ad4125d6d..f7ac56d76b 100644 --- a/site/examples/general/radial/demo/apple-activity.ts +++ b/site/examples/general/radial/demo/apple-activity.ts @@ -7,74 +7,63 @@ const chart = new Chart({ height: 244, }); -const spaceLayer = chart.spaceLayer().data([ - { - name: 'activity1', - percent: 2370, - color: '#1ad5de', - icon: 'https://gw.alipayobjects.com/zos/antfincdn/ck11Y6aRrz/shangjiantou.png', - }, - { - name: 'activity2', - percent: 800, - color: '#a0ff03', - icon: 'https://gw.alipayobjects.com/zos/antfincdn/zY2JB7hhrO/shuangjiantou.png', - }, - { - name: 'activity3', - percent: 650, - color: '#e90b3a', - icon: 'https://gw.alipayobjects.com/zos/antfincdn/%24qBxSxdK05/jiantou.png', - }, -]); +chart + .data([ + { + name: 'activity1', + percent: 0.6, + color: '#1ad5de', + icon: 'https://gw.alipayobjects.com/zos/antfincdn/ck11Y6aRrz/shangjiantou.png', + }, + { + name: 'activity2', + percent: 0.2, + color: '#a0ff03', + icon: 'https://gw.alipayobjects.com/zos/antfincdn/zY2JB7hhrO/shuangjiantou.png', + }, + { + name: 'activity3', + percent: 0.3, + color: '#e90b3a', + icon: 'https://gw.alipayobjects.com/zos/antfincdn/%24qBxSxdK05/jiantou.png', + }, + ]) + .coordinate({ type: 'radial', innerRadius: 0.2 }); -spaceLayer - .view() - .coordinate({ type: 'radial', innerRadius: 0.2 }) +chart .interval() .encode('x', 'name') .encode('y', 1) .encode('size', 52) .encode('color', 'color') .scale('color', { type: 'identity' }) - .axis('x', false) - .axis('y', false) .style('fillOpacity', 0.25) - .animate('enter', { type: 'waveIn', duration: 400 }); + .animate(false); -spaceLayer - .view() - .coordinate({ type: 'radial', innerRadius: 0.2 }) - .axis('x', false) - .axis('y', false) - .scale('color', { type: 'identity' }) - .scale('y', { domain: [0, 3000] }) - .call((node) => - node - .interval() - .encode('x', 'name') - .encode('y', 'percent') - .encode('color', (d) => d.color) - .encode('size', 52) - .style('radius', 26) - .style('shadowColor', 'rgba(0,0,0,0.45)') - .style('shadowBlur', 20) - .style('shadowOffsetX', -2) - .style('shadowOffsetY', -5) - .animate('enter', { - type: 'waveIn', - easing: 'easing-out-bounce', - duration: 1000, - }), - ) - .call((node) => - node - .image() - .encode('x', 'name') - .encode('y', 0) - .encode('src', (d) => d.icon) - .encode('size', 12) - .style('transform', 'translateX(10)'), - ); +chart + .interval() + .encode('x', 'name') + .encode('y', 'percent') + .encode('color', 'color') + .encode('size', 52) + .style('radius', 26) + .style('shadowColor', 'rgba(0,0,0,0.45)') + .style('shadowBlur', 20) + .style('shadowOffsetX', -2) + .style('shadowOffsetY', -5) + .axis(false) + .animate('enter', { + type: 'waveIn', + easing: 'easing-out-bounce', + duration: 1000, + }); + +chart + .image() + .encode('x', 'name') + .encode('y', 0) + .encode('src', (d) => d.icon) + .encode('size', 12) + .style('transform', 'translateX(10)'); chart.render();