@gravity-ui/chartkit 3.2.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/plugins/d3/renderer/components/AxisX.js +15 -5
- package/build/plugins/d3/renderer/components/AxisY.js +18 -8
- package/build/plugins/d3/renderer/components/Chart.js +3 -3
- package/build/plugins/d3/renderer/hooks/useChartOptions/chart.js +16 -9
- package/build/plugins/d3/renderer/hooks/useChartOptions/legend.js +4 -2
- package/build/plugins/d3/renderer/hooks/useChartOptions/types.d.ts +8 -0
- package/build/plugins/d3/renderer/hooks/useChartOptions/x-axis.js +8 -0
- package/build/plugins/d3/renderer/hooks/useChartOptions/y-axis.js +8 -0
- package/build/plugins/d3/renderer/hooks/useScales/index.js +22 -14
- package/build/plugins/d3/renderer/hooks/useShapes/bar-x.d.ts +16 -0
- package/build/plugins/d3/renderer/hooks/useShapes/bar-x.js +75 -0
- package/build/plugins/d3/renderer/hooks/useShapes/index.js +28 -57
- package/build/plugins/d3/renderer/hooks/useShapes/scatter.d.ts +18 -0
- package/build/plugins/d3/renderer/hooks/useShapes/scatter.js +62 -0
- package/build/plugins/highcharts/renderer/helpers/config/utils/index.js +1 -1
- package/build/types/widget-data/axis.d.ts +20 -0
- package/build/types/widget-data/bar-x.d.ts +31 -0
- package/build/types/widget-data/index.d.ts +6 -2
- package/build/types/widget-data/index.js +1 -0
- package/build/types/widget-data/series.d.ts +16 -2
- package/package.json +7 -2
- package/build/libs/chartkit-error/__tests__/chartkit-error.js +0 -27
- package/build/libs/settings/__tests__/settings.test.d.ts +0 -1
- package/build/libs/settings/__tests__/settings.test.js +0 -17
- package/build/plugins/d3/__stories__/LinearCategories.stories.d.ts +0 -4
- package/build/plugins/d3/__stories__/LinearCategories.stories.js +0 -101
- package/build/plugins/d3/__stories__/Timestamp.stories.d.ts +0 -4
- package/build/plugins/d3/__stories__/Timestamp.stories.js +0 -89
- package/build/plugins/d3/__stories__/penguins.json +0 -3098
- package/build/plugins/highcharts/__stories__/Line.stories.d.ts +0 -3
- package/build/plugins/highcharts/__stories__/Line.stories.js +0 -12
- package/build/plugins/highcharts/__stories__/Pie.stories.d.ts +0 -3
- package/build/plugins/highcharts/__stories__/Pie.stories.js +0 -12
- package/build/plugins/highcharts/__stories__/area/Range.stories.d.ts +0 -3
- package/build/plugins/highcharts/__stories__/area/Range.stories.js +0 -12
- package/build/plugins/highcharts/__stories__/area/Stacked.stories.d.ts +0 -3
- package/build/plugins/highcharts/__stories__/area/Stacked.stories.js +0 -12
- package/build/plugins/highcharts/__stories__/column/HorizontalStacked.stories.d.ts +0 -3
- package/build/plugins/highcharts/__stories__/column/HorizontalStacked.stories.js +0 -12
- package/build/plugins/highcharts/__stories__/column/Vertical.stories.d.ts +0 -3
- package/build/plugins/highcharts/__stories__/column/Vertical.stories.js +0 -12
- package/build/plugins/highcharts/__stories__/column/VerticalStacked.stories.d.ts +0 -3
- package/build/plugins/highcharts/__stories__/column/VerticalStacked.stories.js +0 -12
- package/build/plugins/highcharts/__stories__/combined/ComboChartWithSameLegendValues.stories.d.ts +0 -3
- package/build/plugins/highcharts/__stories__/combined/ComboChartWithSameLegendValues.stories.js +0 -12
- package/build/plugins/highcharts/__stories__/complex/TwoAxis.stories.d.ts +0 -3
- package/build/plugins/highcharts/__stories__/complex/TwoAxis.stories.js +0 -12
- package/build/plugins/highcharts/__stories__/components/ChartStory.d.ts +0 -12
- package/build/plugins/highcharts/__stories__/components/ChartStory.js +0 -28
- package/build/plugins/highcharts/__stories__/constants/story-settings.d.ts +0 -42
- package/build/plugins/highcharts/__stories__/constants/story-settings.js +0 -42
- package/build/plugins/highcharts/__stories__/custom-error-render/custom-error-render.stories.d.ts +0 -3
- package/build/plugins/highcharts/__stories__/custom-error-render/custom-error-render.stories.js +0 -41
- package/build/plugins/highcharts/__stories__/no-data/no-data.stories.d.ts +0 -3
- package/build/plugins/highcharts/__stories__/no-data/no-data.stories.js +0 -20
- package/build/plugins/highcharts/__stories__/pie/WithTotals.stories.d.ts +0 -3
- package/build/plugins/highcharts/__stories__/pie/WithTotals.stories.js +0 -12
- package/build/plugins/highcharts/__tests__/prepare-data.test.d.ts +0 -1
- package/build/plugins/highcharts/__tests__/prepare-data.test.js +0 -13
- package/build/plugins/indicator/__stories__/Indicator.stories.d.ts +0 -4
- package/build/plugins/indicator/__stories__/Indicator.stories.js +0 -45
- package/build/plugins/yagr/__stories__/Yagr.stories.d.ts +0 -6
- package/build/plugins/yagr/__stories__/Yagr.stories.js +0 -90
- package/build/plugins/yagr/__stories__/mocks/line10.d.ts +0 -53
- package/build/plugins/yagr/__stories__/mocks/line10.js +0 -78
- package/build/plugins/yagr/__tests__/utils.test.d.ts +0 -1
- package/build/plugins/yagr/__tests__/utils.test.js +0 -26
- package/build/utils/__tests__/common.test.d.ts +0 -1
- package/build/utils/__tests__/common.test.js +0 -9
- /package/build/{libs/chartkit-error/__tests__/chartkit-error.d.ts → types/widget-data/bar-x.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ChartKitWidgetAxis } from './axis';
|
|
2
2
|
import type { ChartKitWidgetChart } from './chart';
|
|
3
3
|
import type { ChartKitWidgetLegend } from './legend';
|
|
4
|
-
import type { ChartKitWidgetSeries } from './series';
|
|
4
|
+
import type { ChartKitWidgetSeries, ChartKitWidgetSeriesOptions } from './series';
|
|
5
5
|
import type { ChartKitWidgetTitle } from './title';
|
|
6
6
|
import type { ChartKitWidgetTooltip } from './tooltip';
|
|
7
7
|
export * from './axis';
|
|
@@ -10,13 +10,17 @@ export * from './chart';
|
|
|
10
10
|
export * from './legend';
|
|
11
11
|
export * from './pie';
|
|
12
12
|
export * from './scatter';
|
|
13
|
+
export * from './bar-x';
|
|
13
14
|
export * from './series';
|
|
14
15
|
export * from './title';
|
|
15
16
|
export * from './tooltip';
|
|
16
17
|
export type ChartKitWidgetData<T = any> = {
|
|
17
18
|
chart?: ChartKitWidgetChart;
|
|
18
19
|
legend?: ChartKitWidgetLegend;
|
|
19
|
-
series:
|
|
20
|
+
series: {
|
|
21
|
+
data: ChartKitWidgetSeries<T>[];
|
|
22
|
+
options?: ChartKitWidgetSeriesOptions;
|
|
23
|
+
};
|
|
20
24
|
title?: ChartKitWidgetTitle;
|
|
21
25
|
tooltip?: ChartKitWidgetTooltip<T>;
|
|
22
26
|
xAxis?: ChartKitWidgetAxis;
|
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
import type { PieSeries, PieSeriesData } from './pie';
|
|
2
2
|
import type { ScatterSeries, ScatterSeriesData } from './scatter';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import type { BarXSeries, BarXSeriesData } from './bar-x';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
export type ChartKitWidgetSeries<T = any> = ScatterSeries<T> | PieSeries<T> | BarXSeries<T>;
|
|
6
|
+
export type ChartKitWidgetSeriesData<T = any> = ScatterSeriesData<T> | PieSeriesData<T> | BarXSeriesData<T>;
|
|
7
|
+
export type DataLabelRendererData<T = any> = {
|
|
8
|
+
data: ChartKitWidgetSeriesData<T>;
|
|
9
|
+
};
|
|
10
|
+
export type ChartKitWidgetSeriesOptions = {
|
|
11
|
+
/** Individual data label for each point. */
|
|
12
|
+
dataLabels?: {
|
|
13
|
+
/** Enable or disable the data labels */
|
|
14
|
+
enabled?: boolean;
|
|
15
|
+
/** Callback function to render the data label */
|
|
16
|
+
renderer?: (args: DataLabelRendererData) => React.SVGTextElementAttributes<SVGTextElement>;
|
|
17
|
+
};
|
|
18
|
+
};
|
package/package.json
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gravity-ui/chartkit",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"description": "React component used to render charts based on any sources you need",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "git@github.com:gravity-ui/ChartKit.git",
|
|
7
7
|
"main": "build/index.js",
|
|
8
8
|
"typings": "build/index.d.ts",
|
|
9
9
|
"files": [
|
|
10
|
-
"build"
|
|
10
|
+
"build",
|
|
11
|
+
"!**/__tests__/**",
|
|
12
|
+
"!**/__stories__/**"
|
|
11
13
|
],
|
|
12
14
|
"publishConfig": {
|
|
13
15
|
"access": "public"
|
|
14
16
|
},
|
|
17
|
+
"sideEffects": [
|
|
18
|
+
"*.css"
|
|
19
|
+
],
|
|
15
20
|
"dependencies": {
|
|
16
21
|
"@gravity-ui/date-utils": "^1.4.1",
|
|
17
22
|
"@gravity-ui/yagr": "^3.7.8",
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { CHARTKIT_ERROR_CODE, ChartKitError, isChartKitError } from '../chartkit-error';
|
|
2
|
-
describe('libs/chartkit-error', () => {
|
|
3
|
-
test.each([
|
|
4
|
-
[new ChartKitError(), true],
|
|
5
|
-
[new Error(), false],
|
|
6
|
-
[null, false],
|
|
7
|
-
[undefined, false],
|
|
8
|
-
])('isChartKitError (args: %j)', (error, expected) => {
|
|
9
|
-
const result = isChartKitError(error);
|
|
10
|
-
expect(result).toEqual(expected);
|
|
11
|
-
});
|
|
12
|
-
test.each([
|
|
13
|
-
[undefined, CHARTKIT_ERROR_CODE.UNKNOWN],
|
|
14
|
-
[{ code: CHARTKIT_ERROR_CODE.NO_DATA }, CHARTKIT_ERROR_CODE.NO_DATA],
|
|
15
|
-
])('check ChartKitError code (args: %j)', (args, expected) => {
|
|
16
|
-
let result = '';
|
|
17
|
-
try {
|
|
18
|
-
throw new ChartKitError(args);
|
|
19
|
-
}
|
|
20
|
-
catch (error) {
|
|
21
|
-
if (isChartKitError(error)) {
|
|
22
|
-
result = error.code;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
expect(result).toEqual(expected);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { settings } from '../settings';
|
|
2
|
-
const resetSettings = () => settings.set({ lang: 'en' });
|
|
3
|
-
describe('libs/settings', () => {
|
|
4
|
-
it('Default lang should be equal to en', () => {
|
|
5
|
-
const result = settings.get('lang');
|
|
6
|
-
expect(result).toBe('en');
|
|
7
|
-
});
|
|
8
|
-
it('Changed lang should be equal to ru', () => {
|
|
9
|
-
settings.set({
|
|
10
|
-
lang: 'ru',
|
|
11
|
-
});
|
|
12
|
-
const result = settings.get('lang');
|
|
13
|
-
expect(result).toBe('ru');
|
|
14
|
-
});
|
|
15
|
-
beforeAll(resetSettings);
|
|
16
|
-
afterEach(resetSettings);
|
|
17
|
-
});
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import random from 'lodash/random';
|
|
3
|
-
import { withKnobs, select, radios, text } from '@storybook/addon-knobs';
|
|
4
|
-
import { Button } from '@gravity-ui/uikit';
|
|
5
|
-
import { settings } from '../../../libs';
|
|
6
|
-
import { ChartKit } from '../../../components/ChartKit';
|
|
7
|
-
import { D3Plugin } from '..';
|
|
8
|
-
import penguins from './penguins.json';
|
|
9
|
-
const shapeScatterSeriesData = (args) => {
|
|
10
|
-
const { data, groupBy, map } = args;
|
|
11
|
-
return data.reduce((acc, d) => {
|
|
12
|
-
const seriesName = d[groupBy];
|
|
13
|
-
if (!seriesName) {
|
|
14
|
-
return acc;
|
|
15
|
-
}
|
|
16
|
-
if (!acc[seriesName]) {
|
|
17
|
-
acc[seriesName] = [];
|
|
18
|
-
}
|
|
19
|
-
acc[seriesName].push(Object.assign({ x: d[map.x], y: d[map.y], radius: random(3, 6) }, (map.category && { category: d[map.category] })));
|
|
20
|
-
return acc;
|
|
21
|
-
}, {});
|
|
22
|
-
};
|
|
23
|
-
const shapeScatterSeries = (data) => {
|
|
24
|
-
return Object.keys(data).reduce((acc, name) => {
|
|
25
|
-
acc.push({
|
|
26
|
-
type: 'scatter',
|
|
27
|
-
data: data[name],
|
|
28
|
-
name,
|
|
29
|
-
});
|
|
30
|
-
return acc;
|
|
31
|
-
}, []);
|
|
32
|
-
};
|
|
33
|
-
const shapeScatterChartData = (series, categoriesType, categories) => {
|
|
34
|
-
let xAxis = {
|
|
35
|
-
labels: {
|
|
36
|
-
enabled: false,
|
|
37
|
-
},
|
|
38
|
-
title: {
|
|
39
|
-
text: text('X axis title', ''),
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
let yAxis = {
|
|
43
|
-
title: {
|
|
44
|
-
text: text('Y axis title', ''),
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
if (categories && categoriesType === 'x') {
|
|
48
|
-
xAxis = Object.assign(Object.assign({}, xAxis), { type: 'category', categories });
|
|
49
|
-
}
|
|
50
|
-
if (categories && categoriesType === 'y') {
|
|
51
|
-
yAxis = Object.assign(Object.assign({}, yAxis), { type: 'category', categories });
|
|
52
|
-
}
|
|
53
|
-
return {
|
|
54
|
-
series,
|
|
55
|
-
xAxis,
|
|
56
|
-
yAxis: [yAxis],
|
|
57
|
-
title: {
|
|
58
|
-
text: text('title', 'Chart title'),
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
const Template = () => {
|
|
63
|
-
const [shown, setShown] = React.useState(false);
|
|
64
|
-
const chartkitRef = React.useRef();
|
|
65
|
-
const x = select('x', ['culmen_length_mm', 'culmen_depth_mm', 'flipper_length_mm', 'body_mass_g'], 'culmen_length_mm');
|
|
66
|
-
const y = select('y', ['culmen_length_mm', 'culmen_depth_mm', 'flipper_length_mm', 'body_mass_g'], 'culmen_depth_mm');
|
|
67
|
-
const groupBy = select('groupBy', ['species', 'island', 'sex'], 'species');
|
|
68
|
-
const categoriesType = radios('categoriesType', { none: 'none', x: 'x', y: 'y' }, 'none');
|
|
69
|
-
const category = categoriesType === 'none'
|
|
70
|
-
? undefined
|
|
71
|
-
: select('category', ['species', 'island', 'sex'], 'island');
|
|
72
|
-
let categories;
|
|
73
|
-
if (categoriesType !== 'none' && category) {
|
|
74
|
-
categories = penguins.reduce((acc, p) => {
|
|
75
|
-
const cerrentCategory = p[category];
|
|
76
|
-
if (typeof cerrentCategory === 'string' && !acc.includes(cerrentCategory)) {
|
|
77
|
-
acc.push(cerrentCategory);
|
|
78
|
-
}
|
|
79
|
-
return acc;
|
|
80
|
-
}, []);
|
|
81
|
-
}
|
|
82
|
-
const shapedScatterSeriesData = shapeScatterSeriesData({
|
|
83
|
-
data: penguins,
|
|
84
|
-
groupBy,
|
|
85
|
-
map: { x, y, category },
|
|
86
|
-
});
|
|
87
|
-
const shapedScatterSeries = shapeScatterSeries(shapedScatterSeriesData);
|
|
88
|
-
const data = shapeScatterChartData(shapedScatterSeries, categoriesType, categories);
|
|
89
|
-
if (!shown) {
|
|
90
|
-
settings.set({ plugins: [D3Plugin] });
|
|
91
|
-
return React.createElement(Button, { onClick: () => setShown(true) }, "Show chart");
|
|
92
|
-
}
|
|
93
|
-
return (React.createElement("div", { style: { height: '80vh', width: '100%' } },
|
|
94
|
-
React.createElement(ChartKit, { ref: chartkitRef, type: "d3", data: data })));
|
|
95
|
-
};
|
|
96
|
-
export const LinearAndCategories = Template.bind({});
|
|
97
|
-
const meta = {
|
|
98
|
-
title: 'Plugins/D3',
|
|
99
|
-
decorators: [withKnobs],
|
|
100
|
-
};
|
|
101
|
-
export default meta;
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import random from 'lodash/random';
|
|
3
|
-
import { dateTime } from '@gravity-ui/date-utils';
|
|
4
|
-
import { Button } from '@gravity-ui/uikit';
|
|
5
|
-
import { settings } from '../../../libs';
|
|
6
|
-
import { ChartKit } from '../../../components/ChartKit';
|
|
7
|
-
import { D3Plugin } from '..';
|
|
8
|
-
const rowData = [
|
|
9
|
-
{
|
|
10
|
-
x: 1690686000000,
|
|
11
|
-
y: 86.71905594602345,
|
|
12
|
-
custom: 'green',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
x: 1690426800000,
|
|
16
|
-
y: 86.73089353359981,
|
|
17
|
-
custom: 'yellow',
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
x: 1690254000000,
|
|
21
|
-
y: 86.53675705168267,
|
|
22
|
-
custom: 'red',
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
x: 1690772400000,
|
|
26
|
-
y: 86.47880981408552,
|
|
27
|
-
custom: 'blue',
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
x: 1690340400000,
|
|
31
|
-
y: 86.4108836764148,
|
|
32
|
-
custom: 'gray',
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
x: 1690599600000,
|
|
36
|
-
y: 86.73440096266042,
|
|
37
|
-
custom: 'pink',
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
x: 1690513200000,
|
|
41
|
-
y: 86.64935929597681,
|
|
42
|
-
custom: 'purple',
|
|
43
|
-
},
|
|
44
|
-
];
|
|
45
|
-
const shapeData = (data) => {
|
|
46
|
-
const scatterData = data.map((d) => ({
|
|
47
|
-
x: d.x,
|
|
48
|
-
y: d.y,
|
|
49
|
-
radius: random(3, 6),
|
|
50
|
-
custom: d.custom,
|
|
51
|
-
}));
|
|
52
|
-
const scatterSeries = {
|
|
53
|
-
type: 'scatter',
|
|
54
|
-
data: scatterData,
|
|
55
|
-
name: 'some-name',
|
|
56
|
-
};
|
|
57
|
-
return {
|
|
58
|
-
series: [scatterSeries],
|
|
59
|
-
xAxis: {
|
|
60
|
-
type: 'datetime',
|
|
61
|
-
timestamps: data.map((d) => d.x),
|
|
62
|
-
},
|
|
63
|
-
tooltip: {
|
|
64
|
-
renderer: ({ hovered }) => {
|
|
65
|
-
const d = hovered.data;
|
|
66
|
-
return React.createElement("div", { style: { color: d.custom } }, dateTime({ input: d.x }).format('LL'));
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
title: {
|
|
70
|
-
text: 'Chart title',
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
};
|
|
74
|
-
const Template = () => {
|
|
75
|
-
const [shown, setShown] = React.useState(false);
|
|
76
|
-
const chartkitRef = React.useRef();
|
|
77
|
-
const data = shapeData(rowData);
|
|
78
|
-
if (!shown) {
|
|
79
|
-
settings.set({ plugins: [D3Plugin] });
|
|
80
|
-
return React.createElement(Button, { onClick: () => setShown(true) }, "Show chart");
|
|
81
|
-
}
|
|
82
|
-
return (React.createElement("div", { style: { height: '300px', width: '100%' } },
|
|
83
|
-
React.createElement(ChartKit, { ref: chartkitRef, type: "d3", data: data })));
|
|
84
|
-
};
|
|
85
|
-
export const Timestamp = Template.bind({});
|
|
86
|
-
const meta = {
|
|
87
|
-
title: 'Plugins/D3',
|
|
88
|
-
};
|
|
89
|
-
export default meta;
|