Skip to content

Commit

Permalink
fix PR comments
Browse files Browse the repository at this point in the history
* update file and functions names
* fix type errors
* fix area chart

Signed-off-by: Anan Zhuang <ananzh@amazon.com>
  • Loading branch information
ananzh committed Jul 22, 2024
1 parent fcecc88 commit c37996e
Show file tree
Hide file tree
Showing 12 changed files with 402 additions and 254 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,64 +4,59 @@
*/

import { mapFieldTypeToVegaType } from '../utils/helpers';
import { AxisFormats } from '../utils/types';
import { AxisFormat, AxisFormats } from '../utils/types';

interface EncodingChannel {
field: string;
type: string;
interface BaseEncodingChannel {
field?: string;
type?: string;
legend?: { title: string | null } | null;
}

export interface AxisEncodingChannel extends BaseEncodingChannel {
axis?: { title: string };
legend?: { title: string | null };
}

interface VegaEncoding {
[key: string]: EncodingChannel;
export type ColorEncodingChannel = BaseEncodingChannel;

export interface TooltipEncodingChannel extends BaseEncodingChannel {
title?: string;
}
export interface VegaEncoding {
x?: AxisEncodingChannel;
y?: AxisEncodingChannel;
color?: ColorEncodingChannel;
tooltip?: TooltipEncodingChannel | TooltipEncodingChannel[];
[key: string]:
| BaseEncodingChannel
| BaseEncodingChannel[]
| TooltipEncodingChannel
| TooltipEncodingChannel[]
| undefined;
}

interface VegaScale {
export interface VegaScale {
name: string;
type: string;
domain: {
data: string;
field: string;
filter?: string;
};
range: string;
range?: string;
padding?: number;
nice?: boolean;
zero?: boolean;
}

/**
* Builds encoding configuration for Vega or Vega-Lite specifications.
*
* @param {any} dimensions - The dimensions of the data.
* @param {AxisFormats} formats - The formatting information for axes.
* @param {boolean} isVega - Whether to build for Vega (true) or Vega-Lite (false).
* @returns {VegaEncoding | VegaScale[]} The encoding configuration.
*/
export const buildEncoding = (
dimensions: any,
formats: any,
isVega: boolean = false
): VegaEncoding | VegaScale[] => {
const { xAxisFormat, xAxisLabel, yAxisFormat, yAxisLabel, zAxisFormat } = formats;

if (isVega) {
return buildVegaScales(dimensions, formats);
}

return buildVegaLiteEncoding(dimensions, formats);
};

/**
* Builds encoding configuration for Vega-Lite specifications.
*
* @param {any} dimensions - The dimensions of the data.
* @param {any} formats - The formatting information for axes.
* @param {AxisFormats} formats - The formatting information for axes.
* @returns {VegaEncoding} The Vega-Lite encoding configuration.
*/
const buildVegaLiteEncoding = (dimensions: any, formats: any): VegaEncoding => {
const { xAxisFormat, xAxisLabel, yAxisFormat, yAxisLabel, zAxisFormat } = formats;
export const buildVegaLiteEncoding = (dimensions: any, formats: AxisFormats): VegaEncoding => {
const { xAxisFormat, xAxisLabel, yAxisFormat, yAxisLabel } = formats;
const encoding: VegaEncoding = {};

Check warning on line 60 in src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts#L59-L60

Added lines #L59 - L60 were not covered by tests

// Handle x-axis
Expand All @@ -71,10 +66,8 @@ const buildVegaLiteEncoding = (dimensions: any, formats: any): VegaEncoding => {
encoding.y = buildAxisEncoding('y', dimensions.y, yAxisFormat, yAxisLabel);

Check warning on line 66 in src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts#L66

Added line #L66 was not covered by tests

// Handle color encoding for multiple y dimensions or series
if (dimensions.y && dimensions.y.length > 1) {
if (dimensions.y) {
encoding.color = buildColorEncoding('series', 'nominal');

Check warning on line 70 in src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts#L70

Added line #L70 was not covered by tests
} else if (dimensions.series) {
encoding.color = buildColorEncoding('series', mapFieldTypeToVegaType(zAxisFormat?.id || ''));
}

return encoding;

Check warning on line 73 in src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts#L73

Added line #L73 was not covered by tests
Expand All @@ -87,7 +80,7 @@ const buildVegaLiteEncoding = (dimensions: any, formats: any): VegaEncoding => {
* @param {any} formats - The formatting information for axes.
* @returns {VegaScale[]} The Vega scale configurations.
*/
const buildVegaScales = (dimensions: any, formats: any): VegaScale[] => {
export const buildVegaScales = (dimensions: any, formats: any): VegaScale[] => {
const scales: VegaScale[] = [

Check warning on line 84 in src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts#L84

Added line #L84 was not covered by tests
{
name: 'xscale',
Expand Down Expand Up @@ -124,18 +117,18 @@ const buildVegaScales = (dimensions: any, formats: any): VegaScale[] => {
* @param {any[]} dimension - The dimension data.
* @param {AxisFormat} axisFormat - The axis format information.
* @param {string} axisLabel - The axis label.
* @returns {EncodingChannel} The axis encoding configuration.
* @returns {AxisEncodingChannel} The axis encoding configuration.
*/
const buildAxisEncoding = (
field: string,
dimension: any[] | undefined,
axisFormat: AxisFormat,
axisLabel: string
): EncodingChannel => {
axisFormat?: AxisFormat,
axisLabel?: string
): AxisEncodingChannel => {
return {

Check warning on line 128 in src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts#L128

Added line #L128 was not covered by tests
field,
type: dimension ? mapFieldTypeToVegaType(axisFormat.id) : 'ordinal',
axis: { title: axisLabel },
type: dimension ? mapFieldTypeToVegaType(axisFormat?.id) : 'ordinal',
axis: { title: axisLabel ? axisLabel : '' },
};
};

Expand All @@ -144,9 +137,9 @@ const buildAxisEncoding = (
*
* @param {string} field - The field name for color encoding.
* @param {string} type - The data type for color encoding.
* @returns {EncodingChannel} The color encoding configuration.
* @returns {ColorEncodingChannel} The color encoding configuration.
*/
const buildColorEncoding = (field: string, type: string): EncodingChannel => {
const buildColorEncoding = (field: string, type: string): ColorEncodingChannel => {
return {

Check warning on line 143 in src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/vis_builder/public/visualizations/vega/components/encoding.ts#L143

Added line #L143 was not covered by tests
field,
type,
Expand Down
Loading

0 comments on commit c37996e

Please sign in to comment.