Skip to content

Commit 330d639

Browse files
authored
fix(MicroBarChart): rollback to old implementation with new API (#588)
BREAKING CHANGE: Removed props `noLegend`, `onLegendClick`, `noAnimation`, `centerLabel` and `chartConfig` as they we not used in the chart and had no effect.
1 parent d8ee4ba commit 330d639

File tree

7 files changed

+678
-339
lines changed

7 files changed

+678
-339
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
import { Meta, Title, Description, Story, Preview, Props } from '@storybook/addon-docs/blocks';
2+
import { MicroBarChart } from '@ui5/webcomponents-react-charts/lib/MicroBarChart';
3+
4+
<Meta
5+
title="Charts / MicroBarChart"
6+
component={MicroBarChart}
7+
argTypes={{
8+
dataset: { type: null },
9+
dimension: { type: null },
10+
measure: { type: null }
11+
}}
12+
args={{
13+
dataset: [
14+
{
15+
name: 'January',
16+
data: 100
17+
},
18+
{
19+
name: 'February',
20+
data: 300
21+
},
22+
{
23+
name: 'March',
24+
data: 530
25+
},
26+
{
27+
name: 'April',
28+
data: 200
29+
}
30+
]
31+
}}
32+
/>
33+
34+
<Title />
35+
<Description />
36+
37+
<Preview>
38+
<Story name="Default">
39+
{(args) => (
40+
<MicroBarChart
41+
dataset={args.dataset}
42+
loading={args.loading}
43+
style={{ width: '100%' }}
44+
dimension={{
45+
accessor: 'name'
46+
}}
47+
measure={{
48+
accessor: 'data'
49+
}}
50+
/>
51+
)}
52+
</Story>
53+
</Preview>
54+
55+
<Props story="Default" of={MicroBarChart} />
56+
57+
<Preview>
58+
<Story name="With custom props">
59+
{(args) => (
60+
<MicroBarChart
61+
onDataPointClick={args.onDataPointClick}
62+
dataset={args.dataset}
63+
style={{ width: '50%' }}
64+
loading={args.loading}
65+
dimension={{
66+
accessor: 'name'
67+
}}
68+
measure={{
69+
accessor: 'data',
70+
colors: ['#f0ab00', 'var(--sapHighlightColor)'],
71+
formatter: (d) => (d > 200 ? 'over 200' : 'lower'),
72+
width: 16
73+
}}
74+
/>
75+
)}
76+
</Story>
77+
</Preview>
78+
79+
<Preview>
80+
<Story name="Loading Placeholder">
81+
<MicroBarChart
82+
dataset={[]}
83+
dimension={{
84+
accessor: 'name'
85+
}}
86+
measure={{
87+
accessor: 'data'
88+
}}
89+
style={{ width: '20%' }}
90+
/>
91+
</Story>
92+
</Preview>

packages/charts/src/components/MicroBarChart/MicroBarChart.stories.tsx

Lines changed: 0 additions & 95 deletions
This file was deleted.
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
import { mount } from 'enzyme';
2+
import * as React from 'react';
3+
import { render, screen, fireEvent } from '@shared/tests/index';
4+
import { MicroBarChart } from '@ui5/webcomponents-react-charts/lib/MicroBarChart';
5+
6+
const text1 = 'Bar Number One';
7+
const text2 = 'Bar Number Two';
8+
const text3 = 'Bar Number Three';
9+
10+
const dataset = [
11+
{ value: 10, label: text1 },
12+
{ value: 100, label: text2 },
13+
{ value: 70, label: text3 }
14+
];
15+
16+
describe('Micro Bar Chart', () => {
17+
test('Render with default Props', () => {
18+
const utils = render(
19+
<MicroBarChart
20+
dimension={{
21+
accessor: 'label'
22+
}}
23+
measure={{
24+
accessor: 'value'
25+
}}
26+
dataset={dataset}
27+
/>
28+
);
29+
expect(screen.getByText(text1).textContent).toEqual(text1);
30+
expect(screen.getByText(text2).textContent).toEqual(text2);
31+
expect(screen.getByText(text3).textContent).toEqual(text3);
32+
33+
expect(utils.asFragment()).toMatchSnapshot();
34+
});
35+
36+
test('With formatted dimension', () => {
37+
render(
38+
<MicroBarChart
39+
dimension={{
40+
accessor: 'label',
41+
formatter: (label) => `${label} - formatted`
42+
}}
43+
measure={{
44+
accessor: 'value'
45+
}}
46+
dataset={dataset}
47+
/>
48+
);
49+
expect(screen.getByText('Bar Number One - formatted').textContent).toEqual('Bar Number One - formatted');
50+
expect(screen.getByText('Bar Number Two - formatted').textContent).toEqual('Bar Number Two - formatted');
51+
});
52+
53+
test('With custom colors', () => {
54+
expect(
55+
render(
56+
<MicroBarChart
57+
dimension={{
58+
accessor: 'label',
59+
formatter: (label) => `${label} - formatted`
60+
}}
61+
measure={{
62+
accessor: 'value',
63+
colors: ['black', 'yellow']
64+
}}
65+
dataset={dataset}
66+
/>
67+
).asFragment()
68+
).toMatchSnapshot();
69+
});
70+
71+
test('Bar click', async () => {
72+
let internalDataset = dataset;
73+
74+
const { getByText, rerender } = render(
75+
<MicroBarChart
76+
dimension={{
77+
accessor: 'label'
78+
}}
79+
onDataPointClick={() =>
80+
(internalDataset = [
81+
{ value: 10, label: 'Bar Number One' },
82+
{ value: 100, label: 'Bar Number Two - clicked' },
83+
{ value: 70, label: 'Bar Number Three' }
84+
])
85+
}
86+
measure={{
87+
accessor: 'value'
88+
}}
89+
dataset={internalDataset}
90+
/>
91+
);
92+
fireEvent.click(getByText('Bar Number Two'));
93+
94+
rerender(
95+
<MicroBarChart
96+
dimension={{
97+
accessor: 'label'
98+
}}
99+
measure={{
100+
accessor: 'value'
101+
}}
102+
dataset={internalDataset}
103+
/>
104+
);
105+
expect(screen.getByText('Bar Number Two - clicked').textContent).toEqual('Bar Number Two - clicked');
106+
});
107+
108+
test('loading placeholder', () => {
109+
const wrapper = mount(<MicroBarChart style={{ width: '50%' }} dimension={null} measure={null} />);
110+
expect(wrapper.render()).toMatchSnapshot();
111+
});
112+
});

0 commit comments

Comments
 (0)