From d88016ad1ba960785448bd1891369e46f83e3cab Mon Sep 17 00:00:00 2001 From: MiniPear Date: Fri, 13 Oct 2023 16:05:02 +0800 Subject: [PATCH] fix(slider): multiple times (#5638) --- .../aapl-line-slider-filter/step2.png | Bin 0 -> 29561 bytes .../interaction/appl-line-slider-filter.ts | 9 ++-- src/interaction/scrollbarFilter.ts | 21 ++++----- src/interaction/sliderFilter.ts | 40 ++++++++++-------- 4 files changed, 40 insertions(+), 30 deletions(-) create mode 100644 __tests__/integration/snapshots/interaction/aapl-line-slider-filter/step2.png diff --git a/__tests__/integration/snapshots/interaction/aapl-line-slider-filter/step2.png b/__tests__/integration/snapshots/interaction/aapl-line-slider-filter/step2.png new file mode 100644 index 0000000000000000000000000000000000000000..d0476821f57774275715d90984fa6517d399427c GIT binary patch literal 29561 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 Of#>pSa%D2+q5liUay-HS literal 0 HcmV?d00001 diff --git a/__tests__/plots/interaction/appl-line-slider-filter.ts b/__tests__/plots/interaction/appl-line-slider-filter.ts index acc2e49127..561cba5241 100644 --- a/__tests__/plots/interaction/appl-line-slider-filter.ts +++ b/__tests__/plots/interaction/appl-line-slider-filter.ts @@ -30,9 +30,7 @@ export function dispatchValueChange(slider, values = [0.25, 0.75]) { slider.update({ values }); slider.dispatchEvent( new CustomEvent('valuechange', { - detail: { - value: [0.25, 0.75], - }, + detail: { value: values }, }), ); } @@ -54,5 +52,10 @@ aaplLineSliderFilter.steps = ({ canvas }) => { dispatchValueChange(s2); }, }, + { + changeState: () => { + dispatchValueChange(s1, [0.7, 0.9]); + }, + }, ]; }; diff --git a/src/interaction/scrollbarFilter.ts b/src/interaction/scrollbarFilter.ts index ced43727d0..e398dad499 100644 --- a/src/interaction/scrollbarFilter.ts +++ b/src/interaction/scrollbarFilter.ts @@ -9,19 +9,20 @@ export function ScrollbarFilter(options: any = {}) { if (!scrollbars.length) return () => {}; const { scale } = view; const { x: scaleX, y: scaleY } = scale; - const channelDomain = { - x: scaleX.getOptions().domain, - y: scaleY.getOptions().domain, + + // The filtered domain, computed by the ratio attribute. + const initDomain = { + x: [...scaleX.getOptions().domain], + y: [...scaleY.getOptions().domain], }; - scaleX.update({ - domain: scaleX.getOptions().expectedDomain, - }); - scaleY.update({ - domain: scaleY.getOptions().expectedDomain, - }); + + // The ordinal domain for each channel. + scaleX.update({ domain: scaleX.getOptions().expectedDomain }); + scaleY.update({ domain: scaleY.getOptions().expectedDomain }); + const interaction = SliderFilter({ ...options, - channelDomain, + initDomain, className: SCROLLBAR_CLASS_NAME, prefix: 'scrollbar', hasState: true, diff --git a/src/interaction/sliderFilter.ts b/src/interaction/sliderFilter.ts index 61d0c63688..0af52aafe1 100644 --- a/src/interaction/sliderFilter.ts +++ b/src/interaction/sliderFilter.ts @@ -5,7 +5,14 @@ import { invert, domainOf, abstractOf } from '../utils/scale'; export const SLIDER_CLASS_NAME = 'slider'; -function filterDataByDomain(options, scaleOptions, prefix, hasState = false) { +function filterDataByDomain( + options, + scaleOptions, + prefix, + hasState = false, + channel0 = 'x', + channel1 = 'y', +) { const { marks } = options; const newMarks = marks.map((mark) => deepMix( @@ -21,11 +28,12 @@ function filterDataByDomain(options, scaleOptions, prefix, hasState = false) { scale: scaleOptions, // Don't rerender sliders. [prefix]: { - ...(mark[prefix]?.x && { - x: { preserve: true, ...(hasState && { ratio: null }) }, + ...(mark[prefix]?.[channel0] && { + [channel0]: { preserve: true, ...(hasState && { ratio: null }) }, }), - ...(mark[prefix]?.y && { - y: { preserve: true, ...(hasState && { ratio: null }) }, + // Only remove ratio state with filtered channel. + ...(mark[prefix]?.[channel1] && { + [channel1]: { preserve: true }, }), }, animate: false, @@ -58,7 +66,7 @@ function extentOf(domain) { * @todo Support click to reset after fix click and dragend conflict. */ export function SliderFilter({ - channelDomain, + initDomain = {}, className = SLIDER_CLASS_NAME, prefix = 'slider', setValue = (component, values) => component.setValues(values), @@ -89,12 +97,10 @@ export function SliderFilter({ const emitHandlers = new Set<[string, (event: any) => void]>(); // Store current domain of x and y scale. - if (!channelDomain) { - channelDomain = { - x: scaleX.getOptions().domain, - y: scaleY.getOptions().domain, - }; - } + const channelDomain = { + x: initDomain.x || scaleX.getOptions().domain, + y: initDomain.y || scaleY.getOptions().domain, + }; for (const slider of sliders) { const { orientation } = slider.attributes; @@ -152,13 +158,13 @@ export function SliderFilter({ setState(slider, (options) => ({ ...filterDataByDomain( options, - { - // Set nice to false to avoid modify domain. - [channel0]: { domain: domain0, nice: false }, - [channel1]: { domain: domain1, nice: false }, - }, + // Set nice to false to avoid modify domain. + // Only update domain of current slider / scrollbar. + { [channel0]: { domain: domain0, nice: false } }, prefix, hasState, + channel0, + channel1, ), paddingLeft, paddingTop,