Skip to content

Commit

Permalink
feat(MCDA): 19032 Append units to custom axis labels in MCDA dropdown (
Browse files Browse the repository at this point in the history
…#805)

* feat(MCDA): 18772 append units to custom axis labels

* test(MCDA): add tests for formatCustomLabelForBivariateAxis() function

* chore: fix typo

* chore: code refactor
  • Loading branch information
albaranau authored Jul 24, 2024
1 parent 9ebcf08 commit c27787c
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 3 deletions.
9 changes: 7 additions & 2 deletions src/utils/bivariate/helpers/converters/axisDTOtoAxis.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
import { formatBivariateAxisLabel } from '~utils/bivariate/labelFormatters';
import {
formatBivariateAxisLabel,
formatCustomBivariateAxisLabel,
} from '~utils/bivariate/labelFormatters';
import type { AxisDTO } from '~core/resources/bivariateStatisticsResource/types';
import type { Axis } from '~utils/bivariate/types/stat.types';

export function axisDTOtoAxis(dto: AxisDTO): Axis {
return {
...dto,
id: dto.quotient.join('|'),
label: dto.label || formatBivariateAxisLabel(dto.quotients),
label: dto.label
? formatCustomBivariateAxisLabel(dto.label, dto.quotients)
: formatBivariateAxisLabel(dto.quotients),
transformation: {
...dto.transformation!,
transformation: dto.transformation?.transformation ?? 'no',
Expand Down
66 changes: 65 additions & 1 deletion src/utils/bivariate/labelFormatters.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import { expect, describe, it } from 'vitest';
import { hasUnits, formatBivariateAxisLabel } from './labelFormatters';
import {
hasUnits,
formatBivariateAxisLabel,
formatCustomBivariateAxisLabel,
} from './labelFormatters';
import type { Axis } from '~utils/bivariate';

describe('BivariateLegend labels formatting', () => {
Expand Down Expand Up @@ -118,4 +122,64 @@ describe('BivariateLegend labels formatting', () => {
);
});
});

describe('formatCustomLabelForBivariateAxis', () => {
it('must return customLabel with units from quotients', () => {
const quotients: Axis['quotients'] = [
{
name: 'total_road_length',
label: 'Total road length',
direction: [['unimportant'], ['important']],
unit: {
id: 'km',
shortName: 'km',
longName: 'kilometers',
},
},
{
name: 'population',
label: 'Population',
direction: [['unimportant'], ['important']],
unit: {
id: 'ppl',
shortName: 'ppl',
longName: 'people',
},
},
];
const customLabel = 'Custom man-distance label';
expect(formatCustomBivariateAxisLabel(customLabel, quotients)).toEqual(
'Custom man-distance label (km/ppl)',
);
});

it('must return customLabel without units if numerator has no unit', () => {
const quotients: Axis['quotients'] = [
{
name: 'total_road_length',
label: 'Total road length',
direction: [['unimportant'], ['important']],
unit: {
id: null,
shortName: null,
longName: null,
},
},
{
name: 'population',
label: 'Population',
direction: [['unimportant'], ['important']],
unit: {
id: 'ppl',
shortName: 'ppl',
longName: 'people',
},
},
];
const customLabel = 'Custom man-distance label';
expect(formatCustomBivariateAxisLabel(customLabel, quotients)).toEqual(
'Custom man-distance label',
);
});
});
});
8 changes: 8 additions & 0 deletions src/utils/bivariate/labelFormatters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@ export const convertDirectionsArrayToLabel = (directions: string[][]) => {
return `${formatSentimentDirection(from)}${formatSentimentDirection(to)}`;
};

export const formatCustomBivariateAxisLabel = (
customLabel: string,
quotients: Axis['quotients'],
): string => {
const units = formatBivariateAxisUnit(quotients);
return units ? `${customLabel} (${units})` : customLabel;
};

export const formatBivariateAxisLabel = (quotients: Axis['quotients']): string => {
if (!quotients) return '';
const [numerator, denominator] = quotients;
Expand Down

0 comments on commit c27787c

Please sign in to comment.