Skip to content

Commit

Permalink
Simplify ExtendedUnitSpec
Browse files Browse the repository at this point in the history
  • Loading branch information
kanitw committed Feb 9, 2019
1 parent a246f9d commit 851db0f
Show file tree
Hide file tree
Showing 8 changed files with 593 additions and 2,409 deletions.
2,925 changes: 567 additions & 2,358 deletions build/vega-lite-schema.json

Large diffs are not rendered by default.

7 changes: 5 additions & 2 deletions scripts/rename-schema.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,19 @@ perl -pi -e s,'<Field>','',g build/vega-lite-schema.json
perl -pi -e s,'<Field\,','<',g build/vega-lite-schema.json
perl -pi -e s,'<StandardType>','',g build/vega-lite-schema.json

perl -pi -e s,'Encoding\&CompositeExtraEncoding','CompositeEncoding',g build/vega-lite-schema.json

perl -pi -e s,'\&FacetMapping','WithFacet',g build/vega-lite-schema.json
perl -pi -e s,'<FacetMapping>','WithFacet',g build/vega-lite-schema.json


perl -pi -e s,'FacetedCompositeUnitSpec','FacetedUnitSpec',g build/vega-lite-schema.json
perl -pi -e s,'ExtendedLayerSpec','LayerSpec',g build/vega-lite-schema.json
perl -pi -e s,'GenericLayerSpec<ExtendedUnitSpec>','LayerSpec',g build/vega-lite-schema.json
perl -pi -e s,'Generic(.*)<FacetedExtendedUnitSpec\,LayerSpec>','\1',g build/vega-lite-schema.json

perl -pi -e s,'GenericUnitSpec<EncodingWithFacet\,AnyMark>','FacetedCompositeUnitSpecAlias',g build/vega-lite-schema.json
perl -pi -e s,'GenericUnitSpec<Encoding\,AnyMark>','CompositeUnitSpecAlias',g build/vega-lite-schema.json
perl -pi -e s,'GenericUnitSpec<\(CompositeEncodingWithFacet\)\,AnyMark>','FacetedCompositeUnitSpecAlias',g build/vega-lite-schema.json
perl -pi -e s,'GenericUnitSpec<\(CompositeEncoding\)\,AnyMark>','CompositeUnitSpecAlias',g build/vega-lite-schema.json

perl -pi -e s,'FieldDefWithoutScale','FieldDef',g build/vega-lite-schema.json

Expand Down
8 changes: 1 addition & 7 deletions src/compositemark/boxplot.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {isNumber, isObject} from 'vega-util';
import {Config} from '../config';
import {Encoding, extractTransformsFromEncoding} from '../encoding';
import {Field, PositionFieldDef} from '../fielddef';
import {PositionFieldDef} from '../fielddef';
import * as log from '../log';
import {isMarkDef, MarkDef} from '../mark';
import {GenericUnitSpec, NormalizedLayerSpec, NormalizedUnitSpec} from '../spec';
Expand All @@ -19,10 +19,6 @@ import {
PartsMixins
} from './common';

export type BoxPlotUnitSpec<
EE = {} // extra encoding parameter (for faceted composite unit spec)
> = GenericUnitSpec<BoxPlotEncoding<Field> & EE, BoxPlot | BoxPlotDef>;

export const BOXPLOT: 'boxplot' = 'boxplot';
export type BoxPlot = typeof BOXPLOT;

Expand Down Expand Up @@ -70,8 +66,6 @@ export type BoxPlotDef = GenericCompositeMarkDef<BoxPlot> &
orient?: Orient;
};

export type BoxPlotEncoding<F extends Field> = Pick<Encoding<F>, 'x' | 'y' | 'color' | 'detail' | 'opacity' | 'size'>;

export interface BoxPlotConfigMixins {
/**
* Box Config
Expand Down
13 changes: 7 additions & 6 deletions src/compositemark/errorbar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,6 @@ import {
} from './common';
import {ErrorBand, ErrorBandDef} from './errorband';

export type ErrorBarUnitSpec<
EE = {} // extra encoding parameter (for faceted composite unit spec)
> = GenericUnitSpec<ErrorEncoding<Field> & EE, ErrorBar | ErrorBarDef>;

export const ERRORBAR: 'errorbar' = 'errorbar';
export type ErrorBar = typeof ERRORBAR;

Expand All @@ -49,8 +45,7 @@ const ERRORBAR_PART_INDEX: Flag<ErrorBarPart> = {
rule: 1
};

export interface ErrorEncoding<F extends Field>
extends Pick<Encoding<F>, 'x' | 'y' | 'x2' | 'y2' | 'color' | 'detail' | 'opacity'> {
export interface ErrorExtraEncoding<F extends Field> {
/**
* Error value of x coordinates for error specified `"errorbar"` and `"errorband"`.
*/
Expand All @@ -74,6 +69,12 @@ export interface ErrorEncoding<F extends Field>
yError2?: SecondaryFieldDef<F> | ValueDef<number>;
}

export type ErrorEncoding<F extends Field> = Pick<
Encoding<F>,
'x' | 'y' | 'x2' | 'y2' | 'color' | 'detail' | 'opacity'
> &
ErrorExtraEncoding<F>;

export const ERRORBAR_PARTS = keys(ERRORBAR_PART_INDEX);

export type ErrorBarPartsMixins = PartsMixins<ErrorBarPart>;
Expand Down
19 changes: 5 additions & 14 deletions src/compositemark/index.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,15 @@
import {Config} from '../config';
import {Field} from '../fielddef';
import {AnyMark, isMarkDef} from '../mark';
import {GenericUnitSpec, NormalizedLayerSpec} from '../spec';
import {keys} from '../util';
import {
BOXPLOT,
BoxPlot,
BOXPLOT_PARTS,
BoxPlotConfigMixins,
BoxPlotDef,
BoxPlotUnitSpec,
normalizeBoxPlot
} from './boxplot';
import {BOXPLOT, BoxPlot, BOXPLOT_PARTS, BoxPlotConfigMixins, BoxPlotDef, normalizeBoxPlot} from './boxplot';
import {
ERRORBAND,
ErrorBand,
ERRORBAND_PARTS,
ErrorBandConfigMixins,
ErrorBandDef,
ErrorBandUnitSpec,
normalizeErrorBand
} from './errorband';
import {
Expand All @@ -26,7 +18,7 @@ import {
ERRORBAR_PARTS,
ErrorBarConfigMixins,
ErrorBarDef,
ErrorBarUnitSpec,
ErrorExtraEncoding,
normalizeErrorBar
} from './errorbar';

Expand All @@ -53,9 +45,8 @@ export function remove(mark: string) {
delete compositeMarkRegistry[mark];
}

export type CompositeMarkUnitSpec<
EE = {} // extra encoding parameter (for faceted composite unit spec)
> = ErrorBarUnitSpec<EE> | ErrorBandUnitSpec<EE> | BoxPlotUnitSpec<EE>;
export type CompositeExtraEncoding<F extends Field> = ErrorExtraEncoding<F>;

export type CompositeMark = BoxPlot | ErrorBar | ErrorBand;

export function getAllCompositeMarks() {
Expand Down
4 changes: 2 additions & 2 deletions src/spec/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import {
GenericUnitSpec,
isUnitSpec,
NormalizedUnitSpec,
TopLevelFacetedUnitSpec
TopLevelFacetedExtendedUnitSpec
} from './unit';

export {normalizeTopLevelSpec as normalize} from '../normalize';
Expand Down Expand Up @@ -65,7 +65,7 @@ export type TopLevelFacetSpec = TopLevel<GenericFacetSpec<FacetedExtendedUnitSpe
* (The json schema is generated from this type.)
*/
export type TopLevelSpec =
| TopLevelFacetedUnitSpec
| TopLevelFacetedExtendedUnitSpec
| TopLevelFacetSpec
| TopLevel<ExtendedLayerSpec>
| TopLevel<GenericRepeatSpec<FacetedExtendedUnitSpec, ExtendedLayerSpec>>
Expand Down
22 changes: 4 additions & 18 deletions src/spec/unit.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import {BoxPlotUnitSpec} from '../compositemark/boxplot';
import {ErrorBandUnitSpec} from '../compositemark/errorband';
import {ErrorBarUnitSpec} from '../compositemark/errorbar';
import {CompositeMarkUnitSpec} from '../compositemark/index';
import {CompositeExtraEncoding} from '../compositemark/index';
import {Encoding} from '../encoding';
import {Field} from '../fielddef';
import {Mark, MarkDef} from '../mark';
import {AnyMark, Mark, MarkDef} from '../mark';
import {Projection} from '../projection';
import {SelectionDef} from '../selection';
import {BaseSpec, DataMixins, LayerUnitMixins} from './base';
Expand Down Expand Up @@ -57,25 +54,14 @@ export interface EmptyObject {}
export type ExtendedUnitSpec<
/** Extra Encoding */
EE = EmptyObject
> = NormalizedUnitSpec<EE> | CompositeMarkUnitSpec<EE>;
> = GenericUnitSpec<Encoding<Field> & CompositeExtraEncoding<Field> & EE, AnyMark>;

/**
* Unit spec that can have a composite mark and row or column channels (shorthand for a facet spec).
*/
export type FacetedExtendedUnitSpec = ExtendedUnitSpec<FacetMapping<Field>>;

// Note: The following three declarations are equivalent to:
// ```
// export type TopLevelFacetedUnitSpec = TopLevel<FacetedExtendedUnitSpec> & DataMixins;
// ```
// However, the JSON schema generator does not support the simpler syntax

export type TopLevelNormalizedUnitSpec = TopLevel<NormalizedUnitSpec<FacetMapping<Field>>> & DataMixins;
export type TopLevelCompositeMarkUnitSpec =
| (TopLevel<ErrorBarUnitSpec<FacetMapping<Field>>> & DataMixins)
| (TopLevel<ErrorBandUnitSpec<FacetMapping<Field>>> & DataMixins)
| (TopLevel<BoxPlotUnitSpec<FacetMapping<Field>>> & DataMixins);
export type TopLevelFacetedUnitSpec = TopLevelNormalizedUnitSpec | TopLevelCompositeMarkUnitSpec;
export type TopLevelFacetedExtendedUnitSpec = TopLevel<FacetedExtendedUnitSpec> & DataMixins;

export function isUnitSpec(spec: BaseSpec): spec is FacetedExtendedUnitSpec | NormalizedUnitSpec {
return !!spec['mark'];
Expand Down
4 changes: 2 additions & 2 deletions test/compositemark/errorbar.test.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
/* tslint:disable:quotemark */
import {AggregateOp} from 'vega';
import {ErrorBarCenter, ErrorBarExtent} from '../../src/compositemark/errorbar';
import {CompositeMarkUnitSpec} from '../../src/compositemark/index';
import {defaultConfig} from '../../src/config';
import {isFieldDef} from '../../src/fielddef';
import * as log from '../../src/log';
import {isMarkDef} from '../../src/mark';
import {ExtendedLayerSpec, GenericSpec, isLayerSpec, isUnitSpec, normalize} from '../../src/spec';
import {ExtendedUnitSpec} from '../../src/spec/unit';
import {isAggregate, isCalculate, Transform} from '../../src/transform';
import {some} from '../../src/util';

Expand Down Expand Up @@ -615,7 +615,7 @@ describe('normalizeErrorBar for all possible extents and centers with raw data i

for (const center of centers) {
for (const extent of extents) {
const spec: GenericSpec<CompositeMarkUnitSpec, ExtendedLayerSpec> = {
const spec: GenericSpec<ExtendedUnitSpec, ExtendedLayerSpec> = {
data: {url: 'data/population.json'},
mark: {type, ...(center ? {center} : {}), ...(extent ? {extent} : {})},
encoding: {
Expand Down

0 comments on commit 851db0f

Please sign in to comment.