From 7c1fa8e817c997eaa0c232db3b15ce92baf35a59 Mon Sep 17 00:00:00 2001 From: Nick Partridge Date: Fri, 4 Jun 2021 10:31:09 -0500 Subject: [PATCH] feat(axis): allow pixel domain padding for y axes (#1145) --- api/charts.api.md | 13 ++- ...ould-allow-domain-ratio-padding-1-snap.png | Bin 0 -> 12479 bytes ...ould-allow-domain-space-padding-1-snap.png | Bin 0 -> 11051 bytes ...hould-allow-pixel-space-padding-1-snap.png | Bin 0 -> 12493 bytes ...th-positive-and-negative-values-1-snap.png | Bin 0 -> 10497 bytes ...ithin-intersept-negative-values-1-snap.png | Bin 0 -> 17750 bytes ...ithin-intersept-positive-values-1-snap.png | Bin 0 -> 18188 bytes ...ng-to-intersept-negative-values-1-snap.png | Bin 0 -> 19336 bytes ...ng-to-intersept-positive-values-1-snap.png | Bin 0 -> 19373 bytes ...after-domain-padding-is-applied-1-snap.png | Bin 0 -> 13070 bytes integration/tests/bar_stories.test.ts | 48 ++++++++++ package.json | 2 +- src/chart_types/xy_chart/domains/types.ts | 2 + src/chart_types/xy_chart/domains/y_domain.ts | 7 +- .../xy_chart/scales/scale_defaults.ts | 4 + src/chart_types/xy_chart/utils/scales.ts | 40 ++++++--- src/chart_types/xy_chart/utils/specs.ts | 48 +++++++++- src/scales/scale_continuous.test.ts | 53 +++++++++++ src/scales/scale_continuous.ts | 84 +++++++++++++++++- src/utils/domain.test.ts | 26 ++++++ src/utils/domain.ts | 55 ++++++++---- stories/axes/11_fit_domain_extent.tsx | 14 ++- stories/bar/32_scale_to_extent.tsx | 23 +++-- stories/utils/knobs.ts | 30 ++++++- 24 files changed, 399 insertions(+), 50 deletions(-) create mode 100644 integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-allow-domain-ratio-padding-1-snap.png create mode 100644 integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-allow-domain-space-padding-1-snap.png create mode 100644 integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-allow-pixel-space-padding-1-snap.png create mode 100644 integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-apply-padding-with-positive-and-negative-values-1-snap.png create mode 100644 integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-apply-padding-within-intersept-negative-values-1-snap.png create mode 100644 integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-apply-padding-within-intersept-positive-values-1-snap.png create mode 100644 integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-constrain-padding-to-intersept-negative-values-1-snap.png create mode 100644 integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-constrain-padding-to-intersept-positive-values-1-snap.png create mode 100644 integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-nice-ticks-after-domain-padding-is-applied-1-snap.png diff --git a/api/charts.api.md b/api/charts.api.md index 7b550e9f07..180b6c91b9 100644 --- a/api/charts.api.md +++ b/api/charts.api.md @@ -674,6 +674,16 @@ export type DisplayValueStyle = Omit & { }; }; +// @public +export const DomainPaddingUnit: Readonly<{ + Domain: "domain"; + Pixel: "pixel"; + DomainRatio: "domainRatio"; +}>; + +// @public +export type DomainPaddingUnit = $Values; + // @public (undocumented) export type DomainRange = LowerBoundedDomain | UpperBoundedDomain | CompleteBoundedDomain | UnboundedDomainWithInterval; @@ -2263,7 +2273,8 @@ export interface XYChartSeriesIdentifier extends SeriesIdentifier { export interface YDomainBase { constrainPadding?: boolean; fit?: boolean; - padding?: number | string; + padding?: number; + paddingUnit?: DomainPaddingUnit; } // @public (undocumented) diff --git a/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-allow-domain-ratio-padding-1-snap.png b/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-allow-domain-ratio-padding-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..241a8f5e74fb892485b171aed7afc31a47e9d07f GIT binary patch literal 12479 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 literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-allow-pixel-space-padding-1-snap.png b/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-allow-pixel-space-padding-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9bc031b1be1dfca15ff35a45bcff5044b55fc8 GIT binary patch literal 12493 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 literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-apply-padding-with-positive-and-negative-values-1-snap.png b/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-apply-padding-with-positive-and-negative-values-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..11a3ceb0e2219290796b4e1cbe382c2c31022a41 GIT binary patch literal 10497 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 literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-constrain-padding-to-intersept-negative-values-1-snap.png b/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-constrain-padding-to-intersept-negative-values-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..74f3b009aae3149d3ef0fc8fa0edc4eb71955bc5 GIT binary patch literal 19336 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 literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-constrain-padding-to-intersept-positive-values-1-snap.png b/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-constrain-padding-to-intersept-positive-values-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..9e028482ac7188f3ee7485cd370f2373a461e86f GIT binary patch literal 19373 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 literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-nice-ticks-after-domain-padding-is-applied-1-snap.png b/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-domain-padding-should-nice-ticks-after-domain-padding-is-applied-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..7695b7f5ba791a83025bfc411c2c598f829b8d85 GIT binary patch literal 13070 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 literal 0 HcmV?d00001 diff --git a/integration/tests/bar_stories.test.ts b/integration/tests/bar_stories.test.ts index d7c9576ec6..1e582901f0 100644 --- a/integration/tests/bar_stories.test.ts +++ b/integration/tests/bar_stories.test.ts @@ -178,4 +178,52 @@ describe('Bar series stories', () => { ); }); }); + + describe('domain padding', () => { + it('should allow domain space padding', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/bar-chart--scale-to-extent&knob-yScaleDataToExtent=&knob-fit Y domain to data=true&knob-constrain padding=true&knob-domain padding=5&knob-Domain padding unit=domain&knob-data=all negative&knob-console log domains=true&knob-nice ticks=', + ); + }); + it('should allow pixel space padding', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/bar-chart--scale-to-extent&knob-yScaleDataToExtent=&knob-fit Y domain to data=true&knob-constrain padding=true&knob-domain padding=100&knob-Domain padding unit=pixel&knob-data=all negative&knob-console log domains=true&knob-nice ticks=', + ); + }); + it('should apply padding with positive and negative values', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/bar-chart--scale-to-extent&knob-fit Y domain to data=true&knob-constrain padding=true&knob-nice ticks=&knob-domain padding=50&knob-Domain padding unit=pixel&knob-data=mixed&knob-SeriesType=bar&knob-console log domains=true', + ); + }); + it('should apply padding within intersept - positive values', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/bar-chart--scale-to-extent&knob-fit Y domain to data=true&knob-constrain padding=true&knob-nice ticks=&knob-domain padding=50&knob-Domain padding unit=pixel&knob-data=all positive&knob-SeriesType=line&knob-console log domains=true', + ); + }); + it('should constrain padding to intersept - positive values', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/bar-chart--scale-to-extent&knob-fit Y domain to data=true&knob-constrain padding=true&knob-nice ticks=&knob-domain padding=100&knob-Domain padding unit=pixel&knob-data=all positive&knob-SeriesType=line&knob-console log domains=true', + ); + }); + it('should apply padding within intersept - negative values', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/bar-chart--scale-to-extent&knob-fit Y domain to data=true&knob-constrain padding=true&knob-nice ticks=&knob-domain padding=50&knob-Domain padding unit=pixel&knob-data=all negative&knob-SeriesType=line&knob-console log domains=true', + ); + }); + it('should constrain padding to intersept - negative values', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/bar-chart--scale-to-extent&knob-fit Y domain to data=true&knob-constrain padding=true&knob-nice ticks=&knob-domain padding=100&knob-Domain padding unit=pixel&knob-data=all negative&knob-SeriesType=line&knob-console log domains=true', + ); + }); + it('should allow domain ratio padding', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/bar-chart--scale-to-extent&knob-yScaleDataToExtent=&knob-fit Y domain to data=true&knob-constrain padding=true&knob-domain padding=0.5&knob-Domain padding unit=domainRatio&knob-data=all negative&knob-console log domains=true&knob-nice ticks=', + ); + }); + it('should nice ticks after domain padding is applied', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/bar-chart--scale-to-extent&knob-yScaleDataToExtent=&knob-fit Y domain to data=true&knob-constrain padding=&knob-domain padding=100&knob-Domain padding unit=pixel&knob-data=all negative&knob-console log domains=true&knob-nice ticks=true', + ); + }); + }); }); diff --git a/package.json b/package.json index 7abab62381..674d217e17 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "test:integration:local": "LOCAL_VRT_SERVER=true PORT=9001 yarn test:integration", "test:integration:debug": "DEBUG=true yarn test:integration:local", "test:integration:legacy": "LEGACY_VRT_SERVER=true yarn test:integration", - "test:integration:local:legacy": "LOCAL_VRT_SERVER=true PORT=9002 test:integration:legacy", + "test:integration:local:legacy": "LOCAL_VRT_SERVER=true PORT=9002 yarn test:integration:legacy", "test:integration:generate": "yarn test:integration:generate:examples && yarn test:integration:generate:page", "test:integration:generate:examples": "./scripts/extract_examples.sh", "test:integration:generate:page": "./scripts/compile_vrt_page.sh", diff --git a/src/chart_types/xy_chart/domains/types.ts b/src/chart_types/xy_chart/domains/types.ts index 0819ab61ae..05e8580560 100644 --- a/src/chart_types/xy_chart/domains/types.ts +++ b/src/chart_types/xy_chart/domains/types.ts @@ -45,4 +45,6 @@ export type YDomain = LogScaleOptions & { groupId: GroupId; domain: ContinuousDomain; desiredTickCount: number; + domainPixelPadding?: number; + constrainDomainPadding?: boolean; }; diff --git a/src/chart_types/xy_chart/domains/y_domain.ts b/src/chart_types/xy_chart/domains/y_domain.ts index 2b05e1c8bd..24d1d564c8 100644 --- a/src/chart_types/xy_chart/domains/y_domain.ts +++ b/src/chart_types/xy_chart/domains/y_domain.ts @@ -28,7 +28,7 @@ import { getSpecDomainGroupId } from '../state/utils/spec'; import { isCompleteBound, isLowerBound, isUpperBound } from '../utils/axis_type_utils'; import { groupBy } from '../utils/group_data_series'; import { DataSeries } from '../utils/series'; -import { BasicSeriesSpec, YDomainRange, SeriesType, StackMode } from '../utils/specs'; +import { BasicSeriesSpec, YDomainRange, SeriesType, StackMode, DomainPaddingUnit } from '../utils/specs'; import { areAllNiceDomain } from './nice'; import { YDomain } from './types'; @@ -70,13 +70,12 @@ function mergeYDomainForGroup( const [{ stackMode, spec }] = dataSeries; const groupId = getSpecDomainGroupId(spec); const { customDomain, type, nice, desiredTickCount } = yScaleConfig[groupId]; + const newCustomDomain = customDomain ? { ...customDomain } : {}; let domain: ContinuousDomain; if (stackMode === StackMode.Percentage) { domain = computeContinuousDataDomain([0, 1], identity, type, customDomain); } else { - const newCustomDomain = customDomain ? { ...customDomain } : {}; - // compute stacked domain const stackedDomain = computeYDomain(stacked, hasZeroBaselineSpecs, type, newCustomDomain); @@ -116,6 +115,8 @@ function mergeYDomainForGroup( logBase: customDomain?.logBase, logMinLimit: customDomain?.logMinLimit, desiredTickCount, + domainPixelPadding: newCustomDomain.paddingUnit === DomainPaddingUnit.Pixel ? newCustomDomain.padding : 0, + constrainDomainPadding: newCustomDomain.constrainPadding, }; } diff --git a/src/chart_types/xy_chart/scales/scale_defaults.ts b/src/chart_types/xy_chart/scales/scale_defaults.ts index 7eb54d56c2..7783e69853 100644 --- a/src/chart_types/xy_chart/scales/scale_defaults.ts +++ b/src/chart_types/xy_chart/scales/scale_defaults.ts @@ -31,4 +31,8 @@ export const Y_SCALE_DEFAULT = { type: ScaleType.Linear, nice: false, desiredTickCount: 10, + constrainDomainPadding: undefined, + domainPixelPadding: 0, + logBase: undefined, + logMinLimit: undefined, }; diff --git a/src/chart_types/xy_chart/utils/scales.ts b/src/chart_types/xy_chart/utils/scales.ts index 3c9125e89d..98243d0712 100644 --- a/src/chart_types/xy_chart/utils/scales.ts +++ b/src/chart_types/xy_chart/utils/scales.ts @@ -123,22 +123,40 @@ interface YScaleOptions { */ export function computeYScales(options: YScaleOptions): Map { const { yDomains, range, integersOnly } = options; - return yDomains.reduce((yScales, { type, nice, desiredTickCount, domain, groupId, logBase, logMinLimit }) => { - const yScale = new ScaleContinuous( + return yDomains.reduce( + ( + yScales, { type, - domain, - range, nice, - }, - { desiredTickCount, - integersOnly, + domain, + groupId, logBase, logMinLimit, + domainPixelPadding, + constrainDomainPadding, }, - ); - yScales.set(groupId, yScale); - return yScales; - }, new Map()); + ) => { + const yScale = new ScaleContinuous( + { + type, + domain, + range, + nice, + }, + { + desiredTickCount, + integersOnly, + logBase, + logMinLimit, + domainPixelPadding, + constrainDomainPadding, + }, + ); + yScales.set(groupId, yScale); + return yScales; + }, + new Map(), + ); } diff --git a/src/chart_types/xy_chart/utils/specs.ts b/src/chart_types/xy_chart/utils/specs.ts index 4ee93c475e..12ca9dcf32 100644 --- a/src/chart_types/xy_chart/utils/specs.ts +++ b/src/chart_types/xy_chart/utils/specs.ts @@ -280,6 +280,43 @@ interface DomainBase { minInterval?: number; } +/** + * Padding unit for domain + * @public + */ +export const DomainPaddingUnit = Object.freeze({ + /** + * Raw value in the domain space. + * + * Example: + * + * If your domain is `[20, 40]` and your padding value is `10`. + * The resulting domain would be `[10, 50]` + */ + Domain: 'domain' as const, + /** + * Spatial pixel value (aka screenspace) not dependent on domain. + * + * @alpha + */ + Pixel: 'pixel' as const, + /** + * Ratio of total domain relative to domain space + * + * Example: + * + * If your domain is `[20, 40]` and your padding value is `0.1`. + * The resulting padding would be 2 (i.e. `0.1 * (40 - 20)`) + * resulting in a domain of `[18, 42]` + */ + DomainRatio: 'domainRatio' as const, +}); +/** + * Padding unit + * @public + */ +export type DomainPaddingUnit = $Values; + /** * Domain option that **only** apply to `yDomains`. * @public @@ -293,11 +330,18 @@ export interface YDomainBase { */ fit?: boolean; /** - * Padding for computed domain. Positive pixel number or percent string. + * Padding for computed domain as positive number. + * Applied to domain __before__ nicing * * Setting `max` or `min` will override this functionality. */ - padding?: number | string; + padding?: number; + /** + * Unit of padding dimension + * + * @defaultValue 'domain' + */ + paddingUnit?: DomainPaddingUnit; /** * Constrains padded domain to the zero baseline. * diff --git a/src/scales/scale_continuous.test.ts b/src/scales/scale_continuous.test.ts index 1c66b51ed3..e687f6957f 100644 --- a/src/scales/scale_continuous.test.ts +++ b/src/scales/scale_continuous.test.ts @@ -431,6 +431,59 @@ describe('Scale Continuous', () => { }); }); }); + + describe('Domain pixel padding', () => { + const scaleOptions = Object.freeze({ + type: ScaleType.Linear, + range: [0, 100] as Range, + domain: [10, 60], + }); + + it('should add pixel padding to domain', () => { + const scale = new ScaleContinuous(scaleOptions, { domainPixelPadding: 10 }); + expect(scale.domain).toEqual([3.75, 66.25]); + }); + + it('should handle inverted domain pixel padding', () => { + const scale = new ScaleContinuous({ ...scaleOptions, domain: [60, 10] }, { domainPixelPadding: 10 }); + expect(scale.domain).toEqual([66.25, 3.75]); + }); + + it('should handle negative domain pixel padding', () => { + const scale = new ScaleContinuous({ ...scaleOptions, domain: [-60, -20] }, { domainPixelPadding: 10 }); + expect(scale.domain).toEqual([-65, -15]); + }); + + it('should handle negative inverted domain pixel padding', () => { + const scale = new ScaleContinuous({ ...scaleOptions, domain: [-20, -60] }, { domainPixelPadding: 10 }); + expect(scale.domain).toEqual([-15, -65]); + }); + + it('should constrain pixel padding to zero', () => { + const scale = new ScaleContinuous(scaleOptions, { domainPixelPadding: 20 }); + expect(scale.domain).toEqual([0, 75]); + }); + + it('should not constrain pixel padding to zero', () => { + const scale = new ScaleContinuous(scaleOptions, { domainPixelPadding: 18, constrainDomainPadding: false }); + expect(scale.domain).toEqual([-4.0625, 74.0625]); + }); + + it('should nice domain after pixel padding is applied', () => { + const scale = new ScaleContinuous( + { ...scaleOptions, nice: true }, + { domainPixelPadding: 18, constrainDomainPadding: false }, + ); + expect(scale.domain).toEqual([-10, 80]); + }); + + it('should not handle pixel padding when pixel is greater than half the total range', () => { + const criticalPadding = Math.abs(scaleOptions.range[0] - scaleOptions.range[1]) / 2; + const scale = new ScaleContinuous(scaleOptions, { domainPixelPadding: criticalPadding }); + expect(scale.domain).toEqual(scaleOptions.domain); + }); + }); + describe('ticks as integers or floats', () => { const domain: ContinuousDomain = [0, 7]; const minRange = 0; diff --git a/src/scales/scale_continuous.ts b/src/scales/scale_continuous.ts index c265ee150e..6b19770dfb 100644 --- a/src/scales/scale_continuous.ts +++ b/src/scales/scale_continuous.ts @@ -33,6 +33,7 @@ import { $Values, Required } from 'utility-types'; import { ScaleContinuousType, Scale } from '.'; import { PrimitiveValue } from '../chart_types/partition_chart/layout/utils/group_by_rollup'; +import { screenspaceMarkerScaleCompressor } from '../solvers/screenspace_marker_scale_compressor'; import { maxValueWithUpperLimit, mergePartial } from '../utils/common'; import { getMomentWithTz } from '../utils/data/date_time'; import { ContinuousDomain, Range } from '../utils/domain'; @@ -55,6 +56,8 @@ const SCALES = { [ScaleType.Time]: scaleUtc, }; +const isUnitRange = ([r1, r2]: Range) => r1 === 0 && r2 === 1; + /** * As log(0) = -Infinite, a log scale domain must be strictly-positive * or strictly-negative; the domain must not include or cross zero value. @@ -118,6 +121,46 @@ export function limitLogScaleDomain([min, max]: ContinuousDomain, logMinLimit?: return [min, max]; } +function getPixelPaddedDomain( + chartHeight: number, + domain: [number, number], + desiredPixelPadding: number, + constrainDomainPadding?: boolean, + intercept = 0, +) { + const inverted = domain[1] < domain[0]; + const orderedDomain: [number, number] = inverted ? (domain.slice().reverse() as [number, number]) : domain; + const { scaleMultiplier } = screenspaceMarkerScaleCompressor( + orderedDomain, + [2 * desiredPixelPadding, 2 * desiredPixelPadding], + chartHeight, + ); + let paddedDomainLo = orderedDomain[0] - desiredPixelPadding / scaleMultiplier; + let paddedDomainHigh = orderedDomain[1] + desiredPixelPadding / scaleMultiplier; + + if (constrainDomainPadding) { + if (paddedDomainLo < intercept && orderedDomain[0] >= intercept) { + const { scaleMultiplier } = screenspaceMarkerScaleCompressor( + [intercept, orderedDomain[1]], + [0, 2 * desiredPixelPadding], + chartHeight, + ); + paddedDomainLo = intercept; + paddedDomainHigh = orderedDomain[1] + desiredPixelPadding / scaleMultiplier; + } else if (paddedDomainHigh > 0 && orderedDomain[1] <= 0) { + const { scaleMultiplier } = screenspaceMarkerScaleCompressor( + [orderedDomain[0], intercept], + [2 * desiredPixelPadding, 0], + chartHeight, + ); + paddedDomainLo = orderedDomain[0] - desiredPixelPadding / scaleMultiplier; + paddedDomainHigh = intercept; + } + } + + return inverted ? [paddedDomainHigh, paddedDomainLo] : [paddedDomainLo, paddedDomainHigh]; +} + /** @public */ export const LogBase = Object.freeze({ /** @@ -205,6 +248,18 @@ type ScaleOptions = Required & { * @defaultValue 0 */ barsPadding: number; + /** + * Pixel value to extend the domain. Applied __before__ nicing. + * + * Does not apply to time scales + * @defaultValue 0 + */ + domainPixelPadding: number; + /** + * Constrains domain pixel padding to the zero baseline + * Does not apply to time scales + */ + constrainDomainPadding?: boolean; /** * The approximated number of ticks. * @defaultValue 10 @@ -226,6 +281,8 @@ const defaultScaleOptions: ScaleOptions = { timeZone: 'utc', totalBarsInCluster: 1, barsPadding: 0, + constrainDomainPadding: true, + domainPixelPadding: 0, desiredTickCount: 10, isSingleValueHistogram: false, integersOnly: false, @@ -251,7 +308,7 @@ export class ScaleContinuous implements Scale { readonly domain: any[]; - readonly range: number[]; + readonly range: Range; readonly isInverted: boolean; @@ -280,6 +337,8 @@ export class ScaleContinuous implements Scale { integersOnly, logBase, logMinLimit, + domainPixelPadding, + constrainDomainPadding, } = mergePartial(defaultScaleOptions, options, { mergeOptionalPartialValues: true }); this.d3Scale = SCALES[type](); @@ -291,6 +350,7 @@ export class ScaleContinuous implements Scale { } this.d3Scale.domain(this.domain); + if (nice && type !== ScaleType.Time) { (this.d3Scale as ScaleContinuousNumeric).domain(this.domain).nice(desiredTickCount); this.domain = this.d3Scale.domain(); @@ -310,6 +370,26 @@ export class ScaleContinuous implements Scale { this.totalBarsInCluster = totalBarsInCluster; this.isSingleValueHistogram = isSingleValueHistogram; + const [r1, r2] = this.range; + const totalRange = Math.abs(r1 - r2); + + if (type !== ScaleType.Time && domainPixelPadding && !isUnitRange(range) && domainPixelPadding * 2 < totalRange) { + const newDomain = getPixelPaddedDomain( + totalRange, + this.domain as [number, number], + domainPixelPadding, + constrainDomainPadding, + ); + + if (nice) { + (this.d3Scale as ScaleContinuousNumeric).domain(newDomain).nice(desiredTickCount); + this.domain = this.d3Scale.domain(); + } else { + this.domain = newDomain; + this.d3Scale.domain(newDomain); + } + } + if (type === ScaleType.Time) { const startDomain = getMomentWithTz(this.domain[0], this.timeZone); const endDomain = getMomentWithTz(this.domain[1], this.timeZone); @@ -466,6 +546,8 @@ export class ScaleContinuous implements Scale { isValueInDomain(value: number) { return value >= this.domain[0] && value <= this.domain[1]; } + + handleDomainPadding() {} } /** @internal */ diff --git a/src/utils/domain.test.ts b/src/utils/domain.test.ts index 47993ee653..c19a121547 100644 --- a/src/utils/domain.test.ts +++ b/src/utils/domain.test.ts @@ -18,6 +18,7 @@ */ import { ScaleType } from '../scales/constants'; +import { DomainPaddingUnit } from '../specs'; import { AccessorFn } from './accessor'; import { identity } from './common'; import { computeContinuousDataDomain, computeDomainExtent, computeOrdinalDataDomain } from './domain'; @@ -214,5 +215,30 @@ describe('utils/domain', () => { }); }); }); + + describe('padding units', () => { + // Note: domain pixel padding computed in continuous scale + it('should not change domain when using Pixel padding unit', () => { + expect(computeDomainExtent([5, 65], { fit: true, padding: 15, paddingUnit: DomainPaddingUnit.Pixel })).toEqual([ + 5, + 65, + ]); + }); + it('should handle DomainRatio padding unit', () => { + expect( + computeDomainExtent([50, 60], { fit: true, padding: 0.5, paddingUnit: DomainPaddingUnit.DomainRatio }), + ).toEqual([45, 65]); + }); + it('should handle negative inverted DomainRatio padding unit', () => { + expect( + computeDomainExtent([-50, -60], { fit: true, padding: 0.5, paddingUnit: DomainPaddingUnit.DomainRatio }), + ).toEqual([-45, -65]); + }); + it('should handle negative inverted Domain padding unit', () => { + expect( + computeDomainExtent([-50, -60], { fit: true, padding: 10, paddingUnit: DomainPaddingUnit.Domain }), + ).toEqual([-40, -70]); + }); + }); }); }); diff --git a/src/utils/domain.ts b/src/utils/domain.ts index 8d88d0a7e2..e71a255c13 100644 --- a/src/utils/domain.ts +++ b/src/utils/domain.ts @@ -20,9 +20,8 @@ import { extent } from 'd3-array'; import { ScaleType } from '../scales/constants'; -import { YDomainRange } from '../specs'; +import { DomainPaddingUnit, YDomainRange } from '../specs'; import { AccessorFn } from './accessor'; -import { getPercentageValue } from './common'; /** @public */ export type OrdinalDomain = (number | string)[]; @@ -31,6 +30,27 @@ export type ContinuousDomain = [min: number, max: number]; /** @public */ export type Range = [min: number, max: number]; +/** + * Returns padded domain given constrain + * @internal */ +export function constrainPadding( + start: number, + end: number, + newStart: number, + newEnd: number, + constrain: boolean = true, +): [number, number] { + if (constrain) { + if (start < end) { + return [start >= 0 && newStart < 0 ? 0 : newStart, end <= 0 && newEnd > 0 ? 0 : newEnd]; + } + + return [end >= 0 && newEnd < 0 ? 0 : newEnd, start <= 0 && newStart > 0 ? 0 : newStart]; + } + + return [newStart, newEnd]; +} + /** @internal */ export function computeOrdinalDataDomain( data: any[], @@ -48,15 +68,14 @@ export function computeOrdinalDataDomain( return sorted ? uniqueValues.sort((a, b) => `${a}`.localeCompare(`${b}`)) : uniqueValues; } -function getPaddedRange(start: number, end: number, domainOptions?: YDomainRange): [number, number] { - if (!domainOptions?.padding) { +function getPaddedDomain(start: number, end: number, domainOptions?: YDomainRange): [number, number] { + if (!domainOptions || !domainOptions.padding || domainOptions.paddingUnit === DomainPaddingUnit.Pixel) { return [start, end]; } - let computedPadding = 0; - - const delta = Math.abs(end - start); - computedPadding = getPercentageValue(domainOptions.padding, delta, 0); + const { padding, paddingUnit = DomainPaddingUnit.Domain } = domainOptions; + const absPadding = Math.abs(padding); + const computedPadding = paddingUnit === DomainPaddingUnit.Domain ? absPadding : absPadding * Math.abs(end - start); if (computedPadding === 0) { return [start, end]; @@ -65,20 +84,19 @@ function getPaddedRange(start: number, end: number, domainOptions?: YDomainRange const newStart = start - computedPadding; const newEnd = end + computedPadding; - if (domainOptions.constrainPadding ?? true) { - return [start >= 0 && newStart < 0 ? 0 : newStart, end <= 0 && newEnd > 0 ? 0 : newEnd]; - } - - return [newStart, newEnd]; + return constrainPadding(start, end, newStart, newEnd, domainOptions.constrainPadding); } /** @internal */ export function computeDomainExtent( - [start, end]: [number, number] | [undefined, undefined], + domain: [number, number] | [undefined, undefined], domainOptions?: YDomainRange, ): [number, number] { - if (start != null && end != null) { - const [paddedStart, paddedEnd] = getPaddedRange(start, end, domainOptions); + if (domain[0] == null || domain[1] == null) return [0, 0]; + + const inverted = domain[0] > domain[1]; + const paddedDomain = (([start, end]: Range): Range => { + const [paddedStart, paddedEnd] = getPaddedDomain(start, end, domainOptions); if (paddedStart >= 0 && paddedEnd >= 0) { return domainOptions?.fit ? [paddedStart, paddedEnd] : [0, paddedEnd]; @@ -88,10 +106,9 @@ export function computeDomainExtent( } return [paddedStart, paddedEnd]; - } + })(inverted ? (domain.slice().reverse() as Range) : domain); - // if either start or end are null - return [0, 0]; + return inverted ? (paddedDomain.slice().reverse() as Range) : paddedDomain; } /** diff --git a/stories/axes/11_fit_domain_extent.tsx b/stories/axes/11_fit_domain_extent.tsx index fa6cc5a82e..8ffe7a8cbd 100644 --- a/stories/axes/11_fit_domain_extent.tsx +++ b/stories/axes/11_fit_domain_extent.tsx @@ -17,11 +17,12 @@ * under the License. */ -import { boolean, select, text } from '@storybook/addon-knobs'; +import { boolean, number, select } from '@storybook/addon-knobs'; import React from 'react'; -import { Axis, Chart, LineSeries, Position, ScaleType } from '../../src'; +import { Axis, Chart, DomainPaddingUnit, LineSeries, Position, ScaleType } from '../../src'; import { SeededDataGenerator } from '../../src/mocks/utils'; +import { getKnobsFromEnum } from '../utils/knobs'; export const Example = () => { const dg = new SeededDataGenerator(); @@ -48,13 +49,18 @@ export const Example = () => { const dataset = dataTypes[dataKey]; const fit = boolean('fit Y domain to data', true); const constrainPadding = boolean('constrain padding', true); - const padding = text('domain padding', '10%'); + const padding = number('domain padding', 0.1); + const paddingUnit = getKnobsFromEnum( + 'Domain padding unit', + DomainPaddingUnit, + DomainPaddingUnit.DomainRatio as DomainPaddingUnit, + ); return ( { @@ -38,7 +39,13 @@ const logDomains = (data: any[], customDomain: any) => { export const Example = () => { const fit = boolean('fit Y domain to data', true); const constrainPadding = boolean('constrain padding', true); - const padding = text('domain padding', '0'); + const nice = boolean('nice ticks', false); + const padding = number('domain padding', 0); + const paddingUnit = getKnobsFromEnum( + 'Domain padding unit', + DomainPaddingUnit, + DomainPaddingUnit.Domain as DomainPaddingUnit, + ); const mixed = [ { x: 0, y: -4 }, { x: 1, y: -3 }, @@ -58,6 +65,7 @@ export const Example = () => { }, 'all negative', ); + const SeriesType = getXYSeriesTypeKnob(); const shouldLogDomains = boolean('console log domains', true); let data; @@ -71,7 +79,7 @@ export const Example = () => { default: data = mixed; } - const customDomain = { fit, padding, constrainPadding }; + const customDomain = { fit, padding, paddingUnit, constrainPadding, nice }; if (shouldLogDomains) { logDomains(data, customDomain); @@ -81,15 +89,16 @@ export const Example = () => { Number(d).toFixed(2)} /> - undefined, group, ) || undefined; + +const seriesTypeMap = { + [SeriesType.Bar]: BarSeries, + [SeriesType.Line]: LineSeries, + [SeriesType.Area]: AreaSeries, + [SeriesType.Bubble]: BubbleSeries, +}; +export const getXYSeriesTypeKnob = (group?: string, ignore: SeriesType[] = []) => { + const spectType = select( + 'SeriesType', + Object.fromEntries(Object.entries(SeriesType).filter(([, type]) => !ignore.includes(type))), + SeriesType.Bar, + group, + ); + + return seriesTypeMap[spectType]; +};