From 4374717c8f0c7368db9b5f350a9b024b715d3908 Mon Sep 17 00:00:00 2001 From: Dominik Moritz Date: Tue, 22 Feb 2022 10:53:07 -0800 Subject: [PATCH] fix: support utc formatting for ordinal data (#7815) Co-authored-by: GitHub Actions Bot --- examples/compiled/time_parse_utc.png | Bin 1592 -> 1381 bytes examples/compiled/time_parse_utc.svg | 2 +- examples/compiled/time_parse_utc.vg.json | 2 +- site/_includes/docs_toc.md | 2 -- src/compile/format.ts | 2 +- test/compile/format.test.ts | 15 ++++++++++++++- 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/examples/compiled/time_parse_utc.png b/examples/compiled/time_parse_utc.png index f346b1a5c1123c289cfd045230f61c15299f12c9..a5f60d2e42fe362e1835551a099982208ccd807e 100644 GIT binary patch delta 1344 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 \ No newline at end of file +00:00time \ No newline at end of file diff --git a/examples/compiled/time_parse_utc.vg.json b/examples/compiled/time_parse_utc.vg.json index 87a0feffe66..3971c5a8f40 100644 --- a/examples/compiled/time_parse_utc.vg.json +++ b/examples/compiled/time_parse_utc.vg.json @@ -71,7 +71,7 @@ "format": { "signal": "timeUnitSpecifier([\"hours\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})" }, - "formatType": "time", + "formatType": "utc", "labelOverlap": true, "zindex": 0 } diff --git a/site/_includes/docs_toc.md b/site/_includes/docs_toc.md index 35cfa70926f..e658f7baf1b 100644 --- a/site/_includes/docs_toc.md +++ b/site/_includes/docs_toc.md @@ -287,7 +287,6 @@ - [Nominal]({{site.baseurl}}/docs/type.html#nominal) - [GeoJSON]({{site.baseurl}}/docs/type.html#geojson) - [Value]({{site.baseurl}}/docs/value.html) - - [Examples]({{site.baseurl}}/docs/value.html#examples) - [Projection]({{site.baseurl}}/docs/projection.html) - [Documentation Overview]({{site.baseurl}}/docs/projection.html#documentation-overview) - [Projection Properties]({{site.baseurl}}/docs/projection.html#projection-properties) @@ -330,7 +329,6 @@ - [Using Parameters]({{site.baseurl}}/docs/parameter.html#using-parameters) - [Selection Configuration]({{site.baseurl}}/docs/parameter.html#config) - [Value]({{site.baseurl}}/docs/value.html) - - [Examples]({{site.baseurl}}/docs/value.html#examples) - [Expr]({{site.baseurl}}/docs/parameter.html) - [Documentation Overview]({{site.baseurl}}/docs/parameter.html#documentation-overview) - [Defining a Parameter]({{site.baseurl}}/docs/parameter.html#defining-a-parameter) diff --git a/src/compile/format.ts b/src/compile/format.ts index 20f49f51032..bbc645a37b9 100644 --- a/src/compile/format.ts +++ b/src/compile/format.ts @@ -160,7 +160,7 @@ export function guideFormatType( return formatType; } if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef) && scaleType !== 'time' && scaleType !== 'utc') { - return 'time'; + return isFieldDef(fieldOrDatumDef) && normalizeTimeUnit(fieldOrDatumDef?.timeUnit)?.utc ? 'utc' : 'time'; } return undefined; } diff --git a/test/compile/format.test.ts b/test/compile/format.test.ts index 0b93dae8c5a..8c935585a29 100644 --- a/test/compile/format.test.ts +++ b/test/compile/format.test.ts @@ -1,5 +1,5 @@ import {vgField} from '../../src/channeldef'; -import {formatSignalRef, numberFormat, timeFormatExpression} from '../../src/compile/format'; +import {formatSignalRef, guideFormatType, numberFormat, timeFormatExpression} from '../../src/compile/format'; import {defaultConfig} from '../../src/config'; import {NOMINAL, ORDINAL, QUANTITATIVE, TEMPORAL} from '../../src/type'; @@ -130,4 +130,17 @@ describe('Format', () => { }); }); }); + + describe('guideFormatType()', () => { + it('should return existing format type', () => { + expect(guideFormatType('number', {field: ' foo', type: 'quantitative'}, 'ordinal')).toBe('number'); + expect(guideFormatType('time', {field: ' foo', type: 'quantitative'}, 'ordinal')).toBe('time'); + }); + + it('should return utc for utc time units', () => { + expect( + guideFormatType('', {field: ' foo', type: 'ordinal', timeUnit: {utc: true, unit: 'year'}}, 'ordinal') + ).toBe('utc'); + }); + }); });