Skip to content

Commit

Permalink
replace literal with enum
Browse files Browse the repository at this point in the history
  • Loading branch information
villebro committed Mar 16, 2023
1 parent b32ab88 commit 4b2f3ac
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@
import { JsonValue, t, TimeGranularity } from '@superset-ui/core';
import { ReactNode } from 'react';
import {
LegendFormData,
TitleFormData,
LabelPositionEnum,
LegendFormData,
LegendOrientation,
LegendType,
SortSeriesData,
SortSeriesType,
TitleFormData,
} from './types';

// eslint-disable-next-line import/prefer-default-export
Expand Down Expand Up @@ -117,6 +118,6 @@ export const TOOLTIP_POINTER_MARGIN = 10;
export const TOOLTIP_OVERFLOW_MARGIN = 5;

export const DEFAULT_SORT_SERIES_DATA: SortSeriesData = {
sort_series_type: 'sum',
sort_series_type: SortSeriesType.Sum,
sort_series_ascending: false,
};
11 changes: 6 additions & 5 deletions superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import {
DEFAULT_SORT_SERIES_DATA,
} from './constants';
import { DEFAULT_FORM_DATA } from './Timeseries/constants';
import { SortSeriesType } from './types';

const { legendMargin, legendOrientation, legendType, showLegend } =
DEFAULT_LEGEND_FORM_DATA;
Expand Down Expand Up @@ -223,11 +224,11 @@ const sortSeriesType: ControlSetItem = {
freeForm: false,
label: t('Sort Series By'),
choices: [
['name', t('Category name')],
['sum', t('Total value')],
['min', t('Minimum value')],
['max', t('Maximum value')],
['avg', t('Average value')],
[SortSeriesType.Name, t('Category name')],
[SortSeriesType.Sum, t('Total value')],
[SortSeriesType.Min, t('Minimum value')],
[SortSeriesType.Max, t('Maximum value')],
[SortSeriesType.Avg, t('Average value')],
],
default: DEFAULT_SORT_SERIES_DATA.sort_series_type,
renderTrigger: true,
Expand Down
8 changes: 7 additions & 1 deletion superset-frontend/plugins/plugin-chart-echarts/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,13 @@ export interface TreePathInfo {
value: number | number[];
}

export type SortSeriesType = 'name' | 'max' | 'min' | 'sum' | 'avg';
export enum SortSeriesType {
Name = 'name',
Max = 'max',
Min = 'min',
Sum = 'sum',
Avg = 'avg',
}

export type SortSeriesData = {
sort_series_type: SortSeriesType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,16 +128,16 @@ export function sortAndFilterSeries(
let aggregator: (name: string) => { name: string; value: any };

switch (sortSeriesType) {
case 'sum':
case SortSeriesType.Sum:
aggregator = name => ({ name, value: sumBy(rows, name) });
break;
case 'min':
case SortSeriesType.Min:
aggregator = name => ({ name, value: minBy(rows, name)?.[name] });
break;
case 'max':
case SortSeriesType.Max:
aggregator = name => ({ name, value: maxBy(rows, name)?.[name] });
break;
case 'avg':
case SortSeriesType.Avg:
aggregator = name => ({ name, value: meanBy(rows, name) });
break;
default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import {
sanitizeHtml,
sortAndFilterSeries,
} from '../../src/utils/series';
import { LegendOrientation, LegendType } from '../../src/types';
import { LegendOrientation, LegendType, SortSeriesType } from '../../src/types';
import { defaultLegendPadding } from '../../src/defaults';
import { NULL_STRING } from '../../src/constants';

Expand All @@ -44,56 +44,36 @@ test('sortAndFilterSeries', () => {
{ my_x_axis: null, x: 4, y: 3, z: 7 },
];

expect(sortAndFilterSeries(data, 'my_x_axis', [], 'min', true)).toEqual([
'y',
'x',
'z',
]);
expect(sortAndFilterSeries(data, 'my_x_axis', [], 'min', false)).toEqual([
'z',
'x',
'y',
]);
expect(sortAndFilterSeries(data, 'my_x_axis', [], 'max', true)).toEqual([
'x',
'z',
'y',
]);
expect(sortAndFilterSeries(data, 'my_x_axis', [], 'max', false)).toEqual([
'y',
'z',
'x',
]);
expect(sortAndFilterSeries(data, 'my_x_axis', [], 'avg', true)).toEqual([
'x',
'y',
'z',
]);
expect(sortAndFilterSeries(data, 'my_x_axis', [], 'avg', false)).toEqual([
'z',
'y',
'x',
]);
expect(sortAndFilterSeries(data, 'my_x_axis', [], 'sum', true)).toEqual([
'x',
'y',
'z',
]);
expect(sortAndFilterSeries(data, 'my_x_axis', [], 'sum', false)).toEqual([
'z',
'y',
'x',
]);
expect(sortAndFilterSeries(data, 'my_x_axis', [], 'name', true)).toEqual([
'x',
'y',
'z',
]);
expect(sortAndFilterSeries(data, 'my_x_axis', [], 'name', false)).toEqual([
'z',
'y',
'x',
]);
expect(
sortAndFilterSeries(data, 'my_x_axis', [], SortSeriesType.Min, true),
).toEqual(['y', 'x', 'z']);
expect(
sortAndFilterSeries(data, 'my_x_axis', [], SortSeriesType.Min, false),
).toEqual(['z', 'x', 'y']);
expect(
sortAndFilterSeries(data, 'my_x_axis', [], SortSeriesType.Max, true),
).toEqual(['x', 'z', 'y']);
expect(
sortAndFilterSeries(data, 'my_x_axis', [], SortSeriesType.Max, false),
).toEqual(['y', 'z', 'x']);
expect(
sortAndFilterSeries(data, 'my_x_axis', [], SortSeriesType.Avg, true),
).toEqual(['x', 'y', 'z']);
expect(
sortAndFilterSeries(data, 'my_x_axis', [], SortSeriesType.Avg, false),
).toEqual(['z', 'y', 'x']);
expect(
sortAndFilterSeries(data, 'my_x_axis', [], SortSeriesType.Sum, true),
).toEqual(['x', 'y', 'z']);
expect(
sortAndFilterSeries(data, 'my_x_axis', [], SortSeriesType.Sum, false),
).toEqual(['z', 'y', 'x']);
expect(
sortAndFilterSeries(data, 'my_x_axis', [], SortSeriesType.Name, true),
).toEqual(['x', 'y', 'z']);
expect(
sortAndFilterSeries(data, 'my_x_axis', [], SortSeriesType.Name, false),
).toEqual(['z', 'y', 'x']);
});

describe('extractSeries', () => {
Expand Down

0 comments on commit 4b2f3ac

Please sign in to comment.