@quillsql/react 2.14.6 → 2.14.8
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/dist/cjs/Chart.d.ts +2 -1
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +9 -4
- package/dist/cjs/ChartBuilder.d.ts +4 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +9 -5
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +7 -0
- package/dist/cjs/ReportBuilder.d.ts +3 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +4 -4
- package/dist/cjs/StaticChart.d.ts +2 -1
- package/dist/cjs/StaticChart.d.ts.map +1 -1
- package/dist/cjs/StaticChart.js +2 -2
- package/dist/cjs/components/Chart/BarChart.d.ts +3 -1
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +16 -4
- package/dist/cjs/components/Chart/CustomLegend.d.ts +2 -0
- package/dist/cjs/components/Chart/CustomLegend.d.ts.map +1 -0
- package/dist/cjs/components/Chart/CustomLegend.js +21 -0
- package/dist/cjs/components/Chart/LineChart.d.ts +2 -1
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +6 -2
- package/dist/cjs/components/Chart/PieChart.d.ts +1 -0
- package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/PieChart.js +31 -2
- package/dist/esm/Chart.d.ts +2 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +9 -4
- package/dist/esm/ChartBuilder.d.ts +4 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +9 -5
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +7 -0
- package/dist/esm/ReportBuilder.d.ts +3 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +4 -4
- package/dist/esm/StaticChart.d.ts +2 -1
- package/dist/esm/StaticChart.d.ts.map +1 -1
- package/dist/esm/StaticChart.js +2 -2
- package/dist/esm/components/Chart/BarChart.d.ts +3 -1
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +17 -5
- package/dist/esm/components/Chart/CustomLegend.d.ts +2 -0
- package/dist/esm/components/Chart/CustomLegend.d.ts.map +1 -0
- package/dist/esm/components/Chart/CustomLegend.js +17 -0
- package/dist/esm/components/Chart/LineChart.d.ts +2 -1
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +7 -3
- package/dist/esm/components/Chart/PieChart.d.ts +1 -0
- package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/PieChart.js +32 -3
- package/package.json +1 -1
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis, Bar, BarChart as ReChartsBarChart, Customized, } from 'recharts';
|
|
2
|
+
import { CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis, Bar, BarChart as ReChartsBarChart, Customized, Legend, } from 'recharts';
|
|
3
3
|
import { valueFormatter } from '../../utils/valueFormatter';
|
|
4
4
|
import { axisFormatter } from '../../utils/axisFormatter';
|
|
5
5
|
import { generateArrayFromColor, selectColor } from '../../utils/color';
|
|
6
6
|
import ChartTooltip from '../../components/Chart/ChartTooltip';
|
|
7
7
|
import getDomain from '../../utils/getDomain';
|
|
8
8
|
import CustomReferenceLine from './CustomReferenceLine';
|
|
9
|
-
|
|
9
|
+
import { RenderLegend } from './CustomLegend';
|
|
10
|
+
export default function BarChart({ colors, colorMap, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isStacked, isAnimationActive = true, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, onClickChartElement, dateFilter, referenceLines, showLegend = false, stackedMode = false, }) {
|
|
10
11
|
const getCustomColor = (field) => {
|
|
11
12
|
const key = field.startsWith('comparison_') ? 'comparison' : 'primary';
|
|
12
13
|
field = field.replace('comparison_', '');
|
|
@@ -44,7 +45,12 @@ export default function BarChart({ colors, colorMap, yAxisFields, data, containe
|
|
|
44
45
|
? onClickChartElement(event?.activePayload
|
|
45
46
|
? event.activePayload[0].payload
|
|
46
47
|
: undefined)
|
|
47
|
-
: undefined, children: [!hideCartesianGrid && (_jsx(CartesianGrid, { horizontal: true, vertical: false, stroke: "#e5e7eb" })), _jsx(
|
|
48
|
+
: undefined, children: [!hideCartesianGrid && (_jsx(CartesianGrid, { horizontal: true, vertical: false, stroke: "#e5e7eb" })), showLegend && (_jsx(Legend, { verticalAlign: "top", align: "left", fontSize: 11, color: theme.secondaryTextColor, wrapperStyle: {
|
|
49
|
+
paddingLeft: 20,
|
|
50
|
+
paddingBottom: 20,
|
|
51
|
+
}, content: _jsx(RenderLegend, {}) })), _jsx(YAxis, { width: 44, hide: hideYAxis, axisLine: false, tickLine: false, type: "number", domain: stackedMode
|
|
52
|
+
? [0, 'auto']
|
|
53
|
+
: getDomain(data, yAxisFields, referenceLines), tick: { transform: 'translate(-3, 0)' }, tickCount: 5, style: {
|
|
48
54
|
fontSize: '12px',
|
|
49
55
|
fontFamily: theme.chartLabelFontFamily,
|
|
50
56
|
}, tickFormatter: (tick) => {
|
|
@@ -93,8 +99,14 @@ export default function BarChart({ colors, colorMap, yAxisFields, data, containe
|
|
|
93
99
|
fields: yAxisFields,
|
|
94
100
|
});
|
|
95
101
|
}, xAxisFormat: xAxisFormat, xAxisField: xAxisField, colors: colors, comparison: comparison, dateFilter: dateFilter }));
|
|
96
|
-
}, position: { y: 0 } }), sortYAxisFields(yAxisFields).map((elem) => {
|
|
97
|
-
return (_jsx(Bar, {
|
|
102
|
+
}, position: { y: 0 } }), sortYAxisFields([...yAxisFields]).map((elem, index) => {
|
|
103
|
+
return (_jsx(Bar, { radius: stackedMode && index === yAxisFields.length - 1
|
|
104
|
+
? [3, 3, 0, 0]
|
|
105
|
+
: 0, dataKey: elem.field, stackId: stackedMode
|
|
106
|
+
? 'same_id'
|
|
107
|
+
: isStacked
|
|
108
|
+
? elem.field.replace('comparison_', '')
|
|
109
|
+
: undefined, type: "linear", fill: getCustomColor(elem.field) ??
|
|
98
110
|
selectColor(elem, colors.length >= yAxisFields.length / (comparison ? 2 : 1)
|
|
99
111
|
? colors
|
|
100
112
|
: generateArrayFromColor(colors.slice(0, 2), yAxisFields.length), yAxisFields.findIndex((field) => field.field === elem.field?.replace('comparison_', ''))), isAnimationActive: isAnimationActive }, elem.field));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomLegend.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/CustomLegend.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,UAAW,GAAG,4CAyCtC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useContext } from 'react';
|
|
3
|
+
import { ThemeContext } from '../../Context';
|
|
4
|
+
export const RenderLegend = (props) => {
|
|
5
|
+
const { payload } = props;
|
|
6
|
+
const [theme] = useContext(ThemeContext);
|
|
7
|
+
console.log('theme', theme);
|
|
8
|
+
return (_jsx("div", { style: { display: 'flex', justifyContent: 'flex-start' }, children: payload.map((entry, index) => (_jsxs("div", { style: {
|
|
9
|
+
display: 'flex',
|
|
10
|
+
alignItems: 'center',
|
|
11
|
+
marginRight: '1rem',
|
|
12
|
+
}, children: [_jsx("svg", { style: { marginRight: '0.5rem' }, width: "16", height: "16", viewBox: "0 0 16 16", children: _jsx("rect", { width: "16", height: "16", rx: "3", fill: payload?.[index]?.color }) }), _jsx("span", { style: {
|
|
13
|
+
color: theme?.secondaryTextColor,
|
|
14
|
+
fontFamily: theme?.fontFamily,
|
|
15
|
+
fontSize: theme?.fontSizeMedium || '14px',
|
|
16
|
+
}, children: entry.value })] }, `legend-${index}`))) }));
|
|
17
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ColorMapType } from '../../Chart';
|
|
2
2
|
import { AxisFormat } from '../../Dashboard';
|
|
3
|
-
export default function LineChart({ colors, colorMap, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isAnimationActive, hideXAxis, hideYAxis, hideCartesianGrid, hideHorizontalCartesianGrid, hideVerticalCartesianGrid, hideSubsequentXAxisTicks, cartesianGridLineStyle, comparisonLineStyle, cartesianGridLineColor, onClickChartElement, dateFilter, referenceLines, }: {
|
|
3
|
+
export default function LineChart({ colors, colorMap, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isAnimationActive, hideXAxis, hideYAxis, hideCartesianGrid, hideHorizontalCartesianGrid, hideVerticalCartesianGrid, hideSubsequentXAxisTicks, cartesianGridLineStyle, comparisonLineStyle, cartesianGridLineColor, onClickChartElement, dateFilter, referenceLines, showLegend, }: {
|
|
4
4
|
colors: string[];
|
|
5
5
|
colorMap?: ColorMapType;
|
|
6
6
|
yAxisFields: any[];
|
|
@@ -28,5 +28,6 @@ export default function LineChart({ colors, colorMap, yAxisFields, data, contain
|
|
|
28
28
|
label: string;
|
|
29
29
|
query: number[];
|
|
30
30
|
}[];
|
|
31
|
+
showLegend?: boolean;
|
|
31
32
|
}): import("react/jsx-runtime").JSX.Element;
|
|
32
33
|
//# sourceMappingURL=LineChart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/LineChart.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/LineChart.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA4B7C,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,MAAM,EACN,QAAa,EACb,WAAW,EACX,IAAI,EACJ,cAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,KAAK,EACL,UAAU,EACV,iBAAwB,EACxB,SAAiB,EACjB,SAAiB,EACjB,iBAAyB,EACzB,2BAAmC,EACnC,yBAAgC,EAChC,wBAAgC,EAChC,sBAAgC,EAChC,mBAA6B,EAC7B,sBAAsB,EACtB,mBAA8B,EAC9B,UAAU,EACV,cAAc,EACd,UAAkB,GACnB,EAAE;IACD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,GAAG,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2BAA2B,EAAE,OAAO,CAAC;IACrC,yBAAyB,EAAE,OAAO,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;IAClC,sBAAsB,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3C,mBAAmB,EAAE,OAAO,GAAG,QAAQ,CAAC;IACxC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,cAAc,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,2CA6TA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Area, CartesianGrid, ComposedChart, Customized, ResponsiveContainer, Tooltip, XAxis, YAxis, } from 'recharts';
|
|
2
|
+
import { Area, CartesianGrid, ComposedChart, Customized, Legend, ResponsiveContainer, Tooltip, XAxis, YAxis, } from 'recharts';
|
|
3
3
|
import { DATE_FORMAT_TYPES, valueFormatter } from '../../utils/valueFormatter';
|
|
4
4
|
import { axisFormatter } from '../../utils/axisFormatter';
|
|
5
5
|
import { selectColor } from '../../utils/color';
|
|
@@ -24,7 +24,7 @@ function createLineForEmptyChart(yAxisFields, dateFilter, xAxisField, xAxisForma
|
|
|
24
24
|
}
|
|
25
25
|
return lineChartData;
|
|
26
26
|
}
|
|
27
|
-
export default function LineChart({ colors, colorMap = {}, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isAnimationActive = true, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', comparisonLineStyle = 'solid', cartesianGridLineColor, onClickChartElement = () => { }, dateFilter, referenceLines, }) {
|
|
27
|
+
export default function LineChart({ colors, colorMap = {}, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isAnimationActive = true, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', comparisonLineStyle = 'solid', cartesianGridLineColor, onClickChartElement = () => { }, dateFilter, referenceLines, showLegend = false, }) {
|
|
28
28
|
const formattedData = useMemo(() => {
|
|
29
29
|
if (!data || data.length === 0) {
|
|
30
30
|
return createLineForEmptyChart(yAxisFields, dateFilter, xAxisField, xAxisFormat);
|
|
@@ -76,7 +76,11 @@ export default function LineChart({ colors, colorMap = {}, yAxisFields, data, co
|
|
|
76
76
|
return sum + 1;
|
|
77
77
|
return sum;
|
|
78
78
|
}, 0);
|
|
79
|
-
return (_jsx("div", { style: { ...containerStyle }, className: className, children: _jsx(ResponsiveContainer, { width: "100%", height: '100%', minWidth: 0, minHeight: 0, children: _jsxs(ComposedChart, { data: formattedData, onClick: (event) => onClickChartElement(event?.activePayload ? event.activePayload[0].payload : undefined), children: [!hideCartesianGrid && (_jsx(CartesianGrid, { horizontal: !hideHorizontalCartesianGrid, vertical: !hideVerticalCartesianGrid, stroke: cartesianGridLineColor ?? '#e5e7eb', strokeDasharray: cartesianGridLineStyle === 'dashed' ? '5 5' : undefined })), _jsx(
|
|
79
|
+
return (_jsx("div", { style: { ...containerStyle }, className: className, children: _jsx(ResponsiveContainer, { width: "100%", height: '100%', minWidth: 0, minHeight: 0, children: _jsxs(ComposedChart, { data: formattedData, onClick: (event) => onClickChartElement(event?.activePayload ? event.activePayload[0].payload : undefined), children: [!hideCartesianGrid && (_jsx(CartesianGrid, { horizontal: !hideHorizontalCartesianGrid, vertical: !hideVerticalCartesianGrid, stroke: cartesianGridLineColor ?? '#e5e7eb', strokeDasharray: cartesianGridLineStyle === 'dashed' ? '5 5' : undefined })), showLegend && (_jsx(Legend, { verticalAlign: "top", align: "left", fontSize: 11, color: theme.secondaryTextColor, wrapperStyle: {
|
|
80
|
+
paddingLeft: 20,
|
|
81
|
+
paddingBottom: 20,
|
|
82
|
+
fontFamily: theme?.fontFamily,
|
|
83
|
+
} })), _jsx(XAxis, { dataKey: xAxisField, hide: hideXAxis, tick: { transform: 'translate(0, 6)' }, style: {
|
|
80
84
|
fontSize: '12px',
|
|
81
85
|
fontFamily: theme?.chartLabelFontFamily ||
|
|
82
86
|
theme?.fontFamily ||
|
|
@@ -72,6 +72,7 @@ export interface DonutChartProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
72
72
|
label: string;
|
|
73
73
|
format: AxisFormat;
|
|
74
74
|
}[];
|
|
75
|
+
showLegend?: boolean;
|
|
75
76
|
}
|
|
76
77
|
declare const PieChartWrapper: React.ForwardRefExoticComponent<DonutChartProps & React.RefAttributes<HTMLDivElement>>;
|
|
77
78
|
export default PieChartWrapper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PieChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/PieChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,QAAA,MAAM,iBAAiB,6DAMb,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEhD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AAE9D,QAAA,MAAM,eAAe,wFAMX,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,QAAA,MAAM,UAAU,yCAA0C,CAAC;AAE3D,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,QAAA,MAAM,WAAW,gNAuBP,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,QAAA,MAAM,oBAAoB,oEAOhB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,QAAA,MAAM,gBAAgB,4DAMZ,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,aAAa,GAAG,aAAa,CAAC;AAE1E,eAAO,MAAM,qBAAqB,EAAE,cACN,CAAC;AAE/B,eAAO,MAAM,eAAe,QAAS,MAAM,EAAE,WACO,CAAC;AAErD,eAAO,MAAM,SAAS,SACd,GAAG,EAAE,UACH,MAAM,EAAE,eACH,MAAM,YACT,MAAM,QA0DjB,CAAC;AAKF,eAAO,MAAM,eAAe,eACd,MAAM,GAAG,SAAS,kBACd,cAAc,QACxB,GAAG,EAAE,YACD,MAAM,WAIyC,CAAC;AAE5D,eAAO,MAAM,iBAAiB,yBAG3B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,UAAU,CAAC;CACnB,4CAeA,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,eAAO,MAAM,eAAe,sEAQzB,oBAAoB,4CAkItB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,GAAG,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,KAAK,EAAE,GAAG,CAAC;IACX,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,UAAU,CAAC;KACpB,EAAE,CAAC;CACL;AAED,eAAO,MAAM,iBAAiB,6DAM3B,sBAAsB,mDA8BxB,CAAC;AAEF,KAAK,iBAAiB,GAAG,OAAO,GAAG,KAAK,CAAC;AAEzC,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,UAAU,CAAC;KACpB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"PieChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/PieChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { Pie, PieChart, ResponsiveContainer, Tooltip } from 'recharts';
|
|
4
4
|
import { generateArrayFromColor } from '../../utils/color';
|
|
@@ -209,8 +209,35 @@ export const DonutChartTooltip = ({ active, payload, valueFormatter, theme, yAxi
|
|
|
209
209
|
}
|
|
210
210
|
return null;
|
|
211
211
|
};
|
|
212
|
+
const renderCustomizedLabel = ({ cx, cy, name, midAngle, outerRadius, percent, tooltipPayload, color, theme, }) => {
|
|
213
|
+
const RADIAN = Math.PI / 180;
|
|
214
|
+
const radius = outerRadius + 25;
|
|
215
|
+
const x = cx + radius * Math.cos(-midAngle * RADIAN);
|
|
216
|
+
const y = cy + radius * Math.sin(-midAngle * RADIAN);
|
|
217
|
+
const category = tooltipPayload?.[0]?.dataKey;
|
|
218
|
+
const rawValue = tooltipPayload?.[0]?.payload?.[`raw_${category}`];
|
|
219
|
+
const displayValue = rawValue
|
|
220
|
+
? `${rawValue}`
|
|
221
|
+
: `${(percent * 100).toFixed(0)}%`;
|
|
222
|
+
const isRightSide = x > cx;
|
|
223
|
+
const isTopSide = y < cy;
|
|
224
|
+
// Calculate consistent left alignment position
|
|
225
|
+
const padding = 10;
|
|
226
|
+
let textX;
|
|
227
|
+
if (isRightSide) {
|
|
228
|
+
// Right side: start text at x + padding
|
|
229
|
+
textX = x + padding;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
// Left side: estimate text width and position so text starts at x - padding - textWidth
|
|
233
|
+
const longestText = name.length > displayValue.length ? name : displayValue;
|
|
234
|
+
const estimatedTextWidth = longestText.length * 7; // Rough estimate, adjust as needed
|
|
235
|
+
textX = x - padding - estimatedTextWidth;
|
|
236
|
+
}
|
|
237
|
+
return (_jsx("g", { children: isTopSide ? (_jsxs(_Fragment, { children: [_jsx("text", { x: textX, y: y - 8, fill: color, textAnchor: "start", dominantBaseline: "central", fontSize: theme?.fontSize || '14px', fontWeight: "500", fontFamily: theme?.fontFamily, children: name }), _jsx("text", { x: textX, y: y + 8, fill: color, textAnchor: "start", dominantBaseline: "central", fontSize: theme?.fontSize || '14px', fontWeight: "400", fontFamily: theme?.fontFamily, children: displayValue })] })) : (_jsxs(_Fragment, { children: [_jsx("text", { x: textX, y: y + 8, fill: color, textAnchor: "start", dominantBaseline: "central", fontSize: theme?.fontSize || '14px', fontWeight: "400", fontFamily: theme?.fontFamily, children: displayValue }), _jsx("text", { x: textX, y: y - 8, fill: color, textAnchor: "start", dominantBaseline: "central", fontSize: theme?.fontSize || '14px', fontWeight: "500", fontFamily: theme?.fontFamily, children: name })] })) }));
|
|
238
|
+
};
|
|
212
239
|
const PieChartWrapper = React.forwardRef((props, ref) => {
|
|
213
|
-
const { category = 'pct_of_the_total', index = 'status', data, colors = [], colorMap = {}, variant = 'donut', valueFormatter = defaultValueFormatter, className, containerStyle, theme, onClickChartElement, yAxisFields, ...other } = props;
|
|
240
|
+
const { category = 'pct_of_the_total', index = 'status', data, colors = [], colorMap = {}, variant = 'donut', valueFormatter = defaultValueFormatter, className, containerStyle, theme, onClickChartElement, yAxisFields, showLegend = false, ...other } = props;
|
|
214
241
|
const isDonut = variant == 'donut';
|
|
215
242
|
if (!data || data.length === 0) {
|
|
216
243
|
return (_jsx("div", { style: {
|
|
@@ -239,7 +266,9 @@ const PieChartWrapper = React.forwardRef((props, ref) => {
|
|
|
239
266
|
generateArrayFromColor(colorMap[category]['primary'], data.length)) ??
|
|
240
267
|
(colors.length >= data.length
|
|
241
268
|
? colors
|
|
242
|
-
: generateArrayFromColor(colors.slice(0, 2), data.length)), index, category), cx: "50%", cy: "50%", startAngle: 90, endAngle: -270, innerRadius: isDonut ? '70%' : '0%', outerRadius:
|
|
269
|
+
: generateArrayFromColor(colors.slice(0, 2), data.length)), index, category), cx: "50%", cy: "50%", startAngle: 90, endAngle: -270, innerRadius: isDonut ? (showLegend ? '50%' : '70%') : '0%', outerRadius: showLegend ? '70%' : '100%', paddingAngle: 0, dataKey: category, nameKey: index, isAnimationActive: true, onClick: onClickChartElement, labelLine: false, label: showLegend
|
|
270
|
+
? (props) => renderCustomizedLabel({ ...props, theme })
|
|
271
|
+
: undefined }), _jsx(Tooltip, { wrapperStyle: {
|
|
243
272
|
outline: 'none',
|
|
244
273
|
}, content: ({ active, payload }) => {
|
|
245
274
|
return (_jsx(DonutChartTooltip, { active: active, payload: payload, valueFormatter: valueFormatter, theme: theme, yAxisFields: yAxisFields }));
|