@j2inn/fin5-ui-utils 2.0.3 → 2.0.5

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/index.d.ts CHANGED
@@ -18,6 +18,8 @@ export * from './react/components/resolvable/configurationForm/ConfigurationForm
18
18
  export * from './react/components/resolvable/configurationForm/ConfigurationFormEntry';
19
19
  export * from './react/components/resolvable/configurationForm/getSectionDefault';
20
20
  export * from './react/components/RecordImage';
21
+ export * from './react/components/charts/pie/PieChart';
22
+ export * from './react/components/charts/pie/SimplePieChart';
21
23
  export * from './react/hooks/useFin5BinUrl';
22
24
  export * from './react/app/Fin5AppContainer';
23
25
  export * from './react/app/Fin5AppRootStore';
package/dist/index.js CHANGED
@@ -43,6 +43,8 @@ __exportStar(require("./react/components/resolvable/configurationForm/Configurat
43
43
  __exportStar(require("./react/components/resolvable/configurationForm/ConfigurationFormEntry"), exports);
44
44
  __exportStar(require("./react/components/resolvable/configurationForm/getSectionDefault"), exports);
45
45
  __exportStar(require("./react/components/RecordImage"), exports);
46
+ __exportStar(require("./react/components/charts/pie/PieChart"), exports);
47
+ __exportStar(require("./react/components/charts/pie/SimplePieChart"), exports);
46
48
  //////////////////////////////////////////////////////////////////////////
47
49
  // React hooks
48
50
  //////////////////////////////////////////////////////////////////////////
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,0EAA0E;AAC1E,4BAA4B;AAC5B,0EAA0E;AAE1E,oDAAiC;AACjC,0DAAuC;AACvC,0DAAuC;AACvC,8DAA2C;AAC3C,uEAAoD;AAEpD,0EAA0E;AAC1E,mBAAmB;AACnB,0EAA0E;AAE1E,mEAAgD;AAChD,oEAAiD;AACjD,4DAAyC;AACzC,oEAAiD;AACjD,4EAAyD;AACzD,gFAA6D;AAC7D,4EAAyD;AACzD,yEAAsD;AACtD,kFAA+D;AAC/D,2FAAwE;AACxE,qFAAkE;AAClE,oGAAiF;AACjF,yGAAsF;AACtF,oGAAiF;AACjF,iEAA8C;AAE9C,0EAA0E;AAC1E,cAAc;AACd,0EAA0E;AAE1E,8DAA2C;AAE3C,0EAA0E;AAC1E,6BAA6B;AAC7B,0EAA0E;AAE1E,+DAA4C;AAC5C,+DAA4C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,0EAA0E;AAC1E,4BAA4B;AAC5B,0EAA0E;AAE1E,oDAAiC;AACjC,0DAAuC;AACvC,0DAAuC;AACvC,8DAA2C;AAC3C,uEAAoD;AAEpD,0EAA0E;AAC1E,mBAAmB;AACnB,0EAA0E;AAE1E,mEAAgD;AAChD,oEAAiD;AACjD,4DAAyC;AACzC,oEAAiD;AACjD,4EAAyD;AACzD,gFAA6D;AAC7D,4EAAyD;AACzD,yEAAsD;AACtD,kFAA+D;AAC/D,2FAAwE;AACxE,qFAAkE;AAClE,oGAAiF;AACjF,yGAAsF;AACtF,oGAAiF;AACjF,iEAA8C;AAC9C,yEAAsD;AACtD,+EAA4D;AAE5D,0EAA0E;AAC1E,cAAc;AACd,0EAA0E;AAE1E,8DAA2C;AAE3C,0EAA0E;AAC1E,6BAA6B;AAC7B,0EAA0E;AAE1E,+DAA4C;AAC5C,+DAA4C"}
@@ -28,7 +28,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.RecordImage = void 0;
30
30
  const react_1 = __importStar(require("react"));
31
- const useFin5BinUrl_1 = require("react/hooks/useFin5BinUrl");
31
+ const useFin5BinUrl_1 = require("../hooks/useFin5BinUrl");
32
32
  /**
33
33
  * Displays an image from a bin record or a fallback if the given imageRef is not valid or if the image can't be found.
34
34
  */
@@ -1 +1 @@
1
- {"version":3,"file":"RecordImage.js","sourceRoot":"","sources":["../../../src/react/components/RecordImage.tsx"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAGH,+CAAuC;AACvC,6DAAyD;AAuBzD;;GAEG;AACI,MAAM,WAAW,GAAG,CAAC,EAC3B,QAAQ,EACR,iBAAiB,EACjB,QAAQ,GACU,EAAE,EAAE;IACtB,MAAM,MAAM,GAAG,IAAA,6BAAa,EAAC,QAAQ,CAAC,CAAA;IACtC,wHAAwH;IACxH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,qBAAqB,GAAG,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAA;IAE3E,IAAI,qBAAqB,EAAE;QAC1B,OAAO,iBAAiB,CAAA;KACxB;SAAM;QACN,OAAO,CACN,0CACK,QAAQ,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,gEAAgE;gBAChE,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClB,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC,EACD,GAAG,EAAE,MAAM,GACV,CACF,CAAA;KACD;AACF,CAAC,CAAA;AAzBY,QAAA,WAAW,eAyBvB"}
1
+ {"version":3,"file":"RecordImage.js","sourceRoot":"","sources":["../../../src/react/components/RecordImage.tsx"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAGH,+CAAuC;AACvC,0DAAsD;AAuBtD;;GAEG;AACI,MAAM,WAAW,GAAG,CAAC,EAC3B,QAAQ,EACR,iBAAiB,EACjB,QAAQ,GACU,EAAE,EAAE;IACtB,MAAM,MAAM,GAAG,IAAA,6BAAa,EAAC,QAAQ,CAAC,CAAA;IACtC,wHAAwH;IACxH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,qBAAqB,GAAG,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAA;IAE3E,IAAI,qBAAqB,EAAE;QAC1B,OAAO,iBAAiB,CAAA;KACxB;SAAM;QACN,OAAO,CACN,0CACK,QAAQ,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,gEAAgE;gBAChE,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClB,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC,EACD,GAAG,EAAE,MAAM,GACV,CACF,CAAA;KACD;AACF,CAAC,CAAA;AAzBY,QAAA,WAAW,eAyBvB"}
@@ -0,0 +1,83 @@
1
+ import * as am5 from '@amcharts/amcharts5';
2
+ import * as am5percent from '@amcharts/amcharts5/percent';
3
+ import React from 'react';
4
+ export declare type PieChartInterfaceColors = {
5
+ [Property in keyof am5.IInterfaceColorsSettings]: string;
6
+ };
7
+ export interface PieChartColorPalette {
8
+ interfaceColors?: Partial<PieChartInterfaceColors>;
9
+ series?: string[];
10
+ }
11
+ export interface PieChartSliceData {
12
+ value: number;
13
+ category: string;
14
+ }
15
+ export interface PieChartProps {
16
+ /**
17
+ * Data used to populate the chart
18
+ */
19
+ data: PieChartSliceData[];
20
+ /**
21
+ * Color palette for the chart slices and interface colors @see https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/#Interface_colors
22
+ */
23
+ colorPalette?: Partial<PieChartColorPalette>;
24
+ /**
25
+ * Number formatting options @see https://www.amcharts.com/docs/v5/tutorials/formatting-date-time-and-numbers-using-intl-object/#Formatting_numbers
26
+ */
27
+ numberFormat?: Intl.NumberFormatOptions;
28
+ /**
29
+ * amcharts5 theme classes to be used by the chart @see https://www.amcharts.com/docs/v5/concepts/themes/
30
+ */
31
+ chartThemes?: typeof am5.Theme[];
32
+ /**
33
+ * Settings for chart customization @see https://www.amcharts.com/docs/v5/reference/piechart/#Settings
34
+ */
35
+ chartSettings?: am5percent.IPieChartSettings;
36
+ /**
37
+ * Settings for legend customization @see https://www.amcharts.com/docs/v5/reference/legend/#Settings
38
+ */
39
+ legendSettings?: am5.ILegendSettings;
40
+ /**
41
+ * Settings for legend value labels customization @see https://www.amcharts.com/docs/v5/reference/label/#Settings
42
+ */
43
+ legendValueLabelsSettings?: Partial<am5.ILabelSettings>;
44
+ /**
45
+ * Settings for chart series customization @see https://www.amcharts.com/docs/v5/reference/pieseries/#Settings
46
+ */
47
+ seriesSettings?: am5percent.IPieSeriesSettings;
48
+ /**
49
+ * Settings for series labels customization @see https://www.amcharts.com/docs/v5/reference/pieseries/#Settings
50
+ */
51
+ seriesLabelsSettings?: Partial<am5.IRadialLabelSettings>;
52
+ /**
53
+ * Settings for central label customization, useful for donut charts, if not specified no center label will be shown @see https://www.amcharts.com/docs/v5/reference/radiallabel/#Settings
54
+ */
55
+ centerLabelSettings?: am5.ILabelSettings;
56
+ /**
57
+ * Settings for pie slices customization @see https://www.amcharts.com/docs/v5/reference/slice/#Settings
58
+ */
59
+ slicesSettings?: Partial<am5.ISliceSettings>;
60
+ /**
61
+ * List of adapters to be applied to the slices @see https://www.amcharts.com/docs/v5/concepts/settings/adapters
62
+ */
63
+ sliceAdapters?: SliceAdapter[];
64
+ /**
65
+ * Optional DOM id for the chart container, if not specified it will be automatically generated
66
+ */
67
+ DOMtargetId?: string;
68
+ }
69
+ export declare type SliceAdapter<T extends keyof am5.ISliceSettings = keyof am5.ISliceSettings> = [
70
+ T,
71
+ (context: {
72
+ root: am5.Root;
73
+ chart: am5percent.PieChart;
74
+ series: am5percent.PieSeries;
75
+ }) => (value: am5.ISliceSettings[T], target: am5.Slice, key: T) => am5.ISliceSettings[T]
76
+ ];
77
+ /**
78
+ * Highly customizable pie chart component based on amcharts5
79
+ * @see https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/
80
+ *
81
+ * This component wraps some of the chart configuration trying to make it more react-friendly
82
+ */
83
+ export declare const PieChart: React.FC<PieChartProps>;
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2023, J2 Innovations. All Rights Reserved
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.PieChart = void 0;
30
+ const am5 = __importStar(require("@amcharts/amcharts5"));
31
+ const am5percent = __importStar(require("@amcharts/amcharts5/percent"));
32
+ const react_1 = __importStar(require("react"));
33
+ const react_jss_1 = require("react-jss");
34
+ const useStyles = (0, react_jss_1.createUseStyles)({
35
+ root: {
36
+ width: '100%',
37
+ height: '100%',
38
+ },
39
+ });
40
+ /**
41
+ * Returns a color palette selecting some colors from the theme.
42
+ * @param theme The theme
43
+ * @returns An array of colors
44
+ */
45
+ const getDefaultChartColors = (theme) => {
46
+ return {
47
+ interfaceColors: {
48
+ text: theme.textColor,
49
+ },
50
+ series: [
51
+ theme.palette.lime,
52
+ theme.palette.cyan,
53
+ theme.palette.red,
54
+ theme.palette.volcano,
55
+ theme.palette.orange,
56
+ theme.palette.gold,
57
+ theme.palette.yellow,
58
+ theme.palette.green,
59
+ theme.palette.purple,
60
+ theme.palette.magenta,
61
+ theme.palette.blue,
62
+ theme.palette.grey,
63
+ ],
64
+ };
65
+ };
66
+ /**
67
+ * Highly customizable pie chart component based on amcharts5
68
+ * @see https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/
69
+ *
70
+ * This component wraps some of the chart configuration trying to make it more react-friendly
71
+ */
72
+ const PieChart = ({ DOMtargetId, data, colorPalette, numberFormat, chartThemes, chartSettings, legendSettings, legendValueLabelsSettings, seriesSettings, seriesLabelsSettings, centerLabelSettings, slicesSettings, sliceAdapters, }) => {
73
+ // Colors configuration
74
+ const theme = (0, react_jss_1.useTheme)();
75
+ const colors = { ...getDefaultChartColors(theme), ...colorPalette };
76
+ // Chart lifecycle
77
+ const [id, setId] = (0, react_1.useState)(DOMtargetId ?? `amchart-${Math.random()}`);
78
+ const rootRef = (0, react_1.useRef)(null);
79
+ const chartRef = (0, react_1.useRef)(null);
80
+ const legendRef = (0, react_1.useRef)(null);
81
+ (0, react_1.useEffect)(() => {
82
+ if (DOMtargetId && DOMtargetId !== id) {
83
+ setId(DOMtargetId);
84
+ }
85
+ }, [DOMtargetId]);
86
+ // Chart setup
87
+ (0, react_1.useLayoutEffect)(() => {
88
+ const root = am5.Root.new(id);
89
+ // Setup amcharts theme
90
+ if (chartThemes) {
91
+ root.setThemes(chartThemes.map((t) => t.new(root)));
92
+ }
93
+ // Setup interface colors, see https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/#Interface_colors
94
+ if (colors.interfaceColors) {
95
+ // Remap settings to use amcharts Color objects
96
+ for (const setting in colors.interfaceColors) {
97
+ const color = colors.interfaceColors[setting];
98
+ // Apply defined interfaceColor on the chart
99
+ root.interfaceColors.set(setting, am5.color(color));
100
+ }
101
+ }
102
+ // Setup chart settings
103
+ const chart = root.container.children.push(am5percent.PieChart.new(root, {
104
+ layout: root.verticalLayout,
105
+ ...chartSettings,
106
+ }));
107
+ // Setup legend
108
+ const legend = chart.children.push(am5.Legend.new(root, {
109
+ layout: root.horizontalLayout,
110
+ ...legendSettings,
111
+ }));
112
+ if (legendValueLabelsSettings) {
113
+ legend.valueLabels.template.setAll(legendValueLabelsSettings);
114
+ }
115
+ rootRef.current = root;
116
+ chartRef.current = chart;
117
+ legendRef.current = legend;
118
+ // clean up before component removal from the DOM
119
+ return () => {
120
+ legendRef.current?.dispose();
121
+ legendRef.current = null;
122
+ chartRef.current?.dispose();
123
+ chartRef.current = null;
124
+ root?.dispose();
125
+ rootRef.current = null;
126
+ };
127
+ }, [
128
+ id,
129
+ colors,
130
+ chartThemes,
131
+ chartSettings,
132
+ legendSettings,
133
+ legendValueLabelsSettings,
134
+ ]);
135
+ // Set data
136
+ (0, react_1.useEffect)(() => {
137
+ const root = rootRef.current;
138
+ const chart = chartRef.current;
139
+ if (chart && root) {
140
+ chart.series.clear();
141
+ if (data?.length) {
142
+ // Setup series
143
+ const series = chart.series.push(am5percent.PieSeries.new(root, {
144
+ valueField: 'value',
145
+ categoryField: 'category',
146
+ ...seriesSettings,
147
+ }));
148
+ // Setup series labels
149
+ if (seriesLabelsSettings) {
150
+ series.labels.template.setAll(seriesLabelsSettings);
151
+ }
152
+ // Setup center label
153
+ if (centerLabelSettings) {
154
+ series.children.push(am5.Label.new(root, {
155
+ ...centerLabelSettings,
156
+ }));
157
+ }
158
+ // Setup series slices
159
+ if (slicesSettings) {
160
+ series.slices.template.setAll(slicesSettings);
161
+ }
162
+ // Setup slice adapters
163
+ if (sliceAdapters) {
164
+ sliceAdapters.forEach(([key, callbackMaker]) => series.slices.template.adapters.add(key, callbackMaker({
165
+ root: root,
166
+ chart: chart,
167
+ series,
168
+ })));
169
+ }
170
+ // Setup series colors
171
+ if (colors?.series) {
172
+ series.get('colors')?.set('colors', colors.series.map((c) => am5.color(c)));
173
+ }
174
+ series.data.setAll(data);
175
+ legendRef.current?.data.setAll(series.dataItems);
176
+ }
177
+ }
178
+ }, [
179
+ data,
180
+ chartRef.current,
181
+ colors?.series,
182
+ seriesSettings,
183
+ slicesSettings,
184
+ seriesLabelsSettings,
185
+ sliceAdapters,
186
+ ]);
187
+ (0, react_1.useEffect)(() => {
188
+ if (numberFormat) {
189
+ rootRef.current?.numberFormatter.set('numberFormat', numberFormat);
190
+ }
191
+ }, [rootRef.current, numberFormat]);
192
+ const classes = useStyles();
193
+ return react_1.default.createElement("div", { id: id, className: classes.root });
194
+ };
195
+ exports.PieChart = PieChart;
196
+ //# sourceMappingURL=PieChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PieChart.js","sourceRoot":"","sources":["../../../../../src/react/components/charts/pie/PieChart.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { PieChartColorPalette, PieChartSliceData } from './PieChart';
3
+ export interface SimplePieChartProps {
4
+ data: PieChartSliceData[];
5
+ donut?: boolean;
6
+ animated?: boolean;
7
+ colorPalette?: Partial<PieChartColorPalette>;
8
+ tooltipFormat?: string;
9
+ numberFormat?: Intl.NumberFormatOptions;
10
+ hideLabels?: boolean;
11
+ /**
12
+ * Optional DOM id for the chart container, if not specified it will be automatically generated
13
+ */
14
+ DOMtargetId?: string;
15
+ }
16
+ /**
17
+ * Simplified version of the pie chart for quick usage and easy configuration.
18
+ * Serves also as an example of how to use the underlying PieChart component.
19
+ */
20
+ export declare const SimplePieChart: React.FC<SimplePieChartProps>;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2023, J2 Innovations. All Rights Reserved
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ var __importDefault = (this && this.__importDefault) || function (mod) {
29
+ return (mod && mod.__esModule) ? mod : { "default": mod };
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.SimplePieChart = void 0;
33
+ const am5 = __importStar(require("@amcharts/amcharts5"));
34
+ const Animated_1 = __importDefault(require("@amcharts/amcharts5/themes/Animated"));
35
+ const react_1 = __importDefault(require("react"));
36
+ const PieChart_1 = require("./PieChart");
37
+ /**
38
+ * Simplified version of the pie chart for quick usage and easy configuration.
39
+ * Serves also as an example of how to use the underlying PieChart component.
40
+ */
41
+ const SimplePieChart = ({ data, donut, animated, colorPalette, tooltipFormat, numberFormat = {
42
+ style: 'decimal',
43
+ minimumFractionDigits: 0,
44
+ maximumFractionDigits: 1,
45
+ }, hideLabels, DOMtargetId, }) => {
46
+ return (react_1.default.createElement(PieChart_1.PieChart, { DOMtargetId: DOMtargetId, colorPalette: colorPalette, data: data, chartThemes: animated ? [Animated_1.default] : undefined, chartSettings: {
47
+ innerRadius: donut ? am5.percent(55) : undefined,
48
+ }, numberFormat: numberFormat, legendSettings: {
49
+ centerX: am5.percent(50),
50
+ x: am5.percent(50),
51
+ }, seriesLabelsSettings: { forceHidden: hideLabels }, seriesSettings: { alignLabels: false }, slicesSettings: {
52
+ tooltipText: tooltipFormat,
53
+ } }));
54
+ };
55
+ exports.SimplePieChart = SimplePieChart;
56
+ //# sourceMappingURL=SimplePieChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimplePieChart.js","sourceRoot":"","sources":["../../../../../src/react/components/charts/pie/SimplePieChart.tsx"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yDAA0C;AAC1C,mFAAoE;AACpE,kDAAyB;AACzB,yCAA8E;AAgB9E;;;GAGG;AACI,MAAM,cAAc,GAAkC,CAAC,EAC7D,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,GAAG;IACd,KAAK,EAAE,SAAS;IAChB,qBAAqB,EAAE,CAAC;IACxB,qBAAqB,EAAE,CAAC;CACxB,EACD,UAAU,EACV,WAAW,GACX,EAAe,EAAE;IACjB,OAAO,CACN,8BAAC,mBAAQ,IACR,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,EACxD,aAAa,EAAE;YACd,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;SAChD,EACD,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE;YACf,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;SAClB,EACD,oBAAoB,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EACjD,cAAc,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EACtC,cAAc,EAAE;YACf,WAAW,EAAE,aAAa;SAC1B,GACA,CACF,CAAA;AACF,CAAC,CAAA;AAnCY,QAAA,cAAc,kBAmC1B"}
@@ -18,6 +18,8 @@ export * from './react/components/resolvable/configurationForm/ConfigurationForm
18
18
  export * from './react/components/resolvable/configurationForm/ConfigurationFormEntry';
19
19
  export * from './react/components/resolvable/configurationForm/getSectionDefault';
20
20
  export * from './react/components/RecordImage';
21
+ export * from './react/components/charts/pie/PieChart';
22
+ export * from './react/components/charts/pie/SimplePieChart';
21
23
  export * from './react/hooks/useFin5BinUrl';
22
24
  export * from './react/app/Fin5AppContainer';
23
25
  export * from './react/app/Fin5AppRootStore';
package/dist_es/index.js CHANGED
@@ -27,6 +27,8 @@ export * from './react/components/resolvable/configurationForm/ConfigurationForm
27
27
  export * from './react/components/resolvable/configurationForm/ConfigurationFormEntry';
28
28
  export * from './react/components/resolvable/configurationForm/getSectionDefault';
29
29
  export * from './react/components/RecordImage';
30
+ export * from './react/components/charts/pie/PieChart';
31
+ export * from './react/components/charts/pie/SimplePieChart';
30
32
  //////////////////////////////////////////////////////////////////////////
31
33
  // React hooks
32
34
  //////////////////////////////////////////////////////////////////////////
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0EAA0E;AAC1E,4BAA4B;AAC5B,0EAA0E;AAE1E,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sCAAsC,CAAA;AAEpD,0EAA0E;AAC1E,mBAAmB;AACnB,0EAA0E;AAE1E,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,2CAA2C,CAAA;AACzD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,2CAA2C,CAAA;AACzD,cAAc,wCAAwC,CAAA;AACtD,cAAc,iDAAiD,CAAA;AAC/D,cAAc,0DAA0D,CAAA;AACxE,cAAc,oDAAoD,CAAA;AAClE,cAAc,mEAAmE,CAAA;AACjF,cAAc,wEAAwE,CAAA;AACtF,cAAc,mEAAmE,CAAA;AACjF,cAAc,gCAAgC,CAAA;AAE9C,0EAA0E;AAC1E,cAAc;AACd,0EAA0E;AAE1E,cAAc,6BAA6B,CAAA;AAE3C,0EAA0E;AAC1E,6BAA6B;AAC7B,0EAA0E;AAE1E,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0EAA0E;AAC1E,4BAA4B;AAC5B,0EAA0E;AAE1E,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sCAAsC,CAAA;AAEpD,0EAA0E;AAC1E,mBAAmB;AACnB,0EAA0E;AAE1E,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,2CAA2C,CAAA;AACzD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,2CAA2C,CAAA;AACzD,cAAc,wCAAwC,CAAA;AACtD,cAAc,iDAAiD,CAAA;AAC/D,cAAc,0DAA0D,CAAA;AACxE,cAAc,oDAAoD,CAAA;AAClE,cAAc,mEAAmE,CAAA;AACjF,cAAc,wEAAwE,CAAA;AACtF,cAAc,mEAAmE,CAAA;AACjF,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wCAAwC,CAAA;AACtD,cAAc,8CAA8C,CAAA;AAE5D,0EAA0E;AAC1E,cAAc;AACd,0EAA0E;AAE1E,cAAc,6BAA6B,CAAA;AAE3C,0EAA0E;AAC1E,6BAA6B;AAC7B,0EAA0E;AAE1E,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA"}
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2023, J2 Innovations. All Rights Reserved
3
3
  */
4
4
  import React, { useState } from 'react';
5
- import { useFin5BinUrl } from 'react/hooks/useFin5BinUrl';
5
+ import { useFin5BinUrl } from '../hooks/useFin5BinUrl';
6
6
  /**
7
7
  * Displays an image from a bin record or a fallback if the given imageRef is not valid or if the image can't be found.
8
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"RecordImage.js","sourceRoot":"","sources":["../../../src/react/components/RecordImage.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAuBzD;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC3B,QAAQ,EACR,iBAAiB,EACjB,QAAQ,GACU,EAAE,EAAE;IACtB,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACtC,wHAAwH;IACxH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,qBAAqB,GAAG,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAA;IAE3E,IAAI,qBAAqB,EAAE;QAC1B,OAAO,iBAAiB,CAAA;KACxB;SAAM;QACN,OAAO,CACN,gCACK,QAAQ,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,gEAAgE;gBAChE,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClB,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC,EACD,GAAG,EAAE,MAAM,GACV,CACF,CAAA;KACD;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"RecordImage.js","sourceRoot":"","sources":["../../../src/react/components/RecordImage.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAuBtD;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC3B,QAAQ,EACR,iBAAiB,EACjB,QAAQ,GACU,EAAE,EAAE;IACtB,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACtC,wHAAwH;IACxH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,qBAAqB,GAAG,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAA;IAE3E,IAAI,qBAAqB,EAAE;QAC1B,OAAO,iBAAiB,CAAA;KACxB;SAAM;QACN,OAAO,CACN,gCACK,QAAQ,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,gEAAgE;gBAChE,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClB,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC,EACD,GAAG,EAAE,MAAM,GACV,CACF,CAAA;KACD;AACF,CAAC,CAAA"}
@@ -0,0 +1,83 @@
1
+ import * as am5 from '@amcharts/amcharts5';
2
+ import * as am5percent from '@amcharts/amcharts5/percent';
3
+ import React from 'react';
4
+ export declare type PieChartInterfaceColors = {
5
+ [Property in keyof am5.IInterfaceColorsSettings]: string;
6
+ };
7
+ export interface PieChartColorPalette {
8
+ interfaceColors?: Partial<PieChartInterfaceColors>;
9
+ series?: string[];
10
+ }
11
+ export interface PieChartSliceData {
12
+ value: number;
13
+ category: string;
14
+ }
15
+ export interface PieChartProps {
16
+ /**
17
+ * Data used to populate the chart
18
+ */
19
+ data: PieChartSliceData[];
20
+ /**
21
+ * Color palette for the chart slices and interface colors @see https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/#Interface_colors
22
+ */
23
+ colorPalette?: Partial<PieChartColorPalette>;
24
+ /**
25
+ * Number formatting options @see https://www.amcharts.com/docs/v5/tutorials/formatting-date-time-and-numbers-using-intl-object/#Formatting_numbers
26
+ */
27
+ numberFormat?: Intl.NumberFormatOptions;
28
+ /**
29
+ * amcharts5 theme classes to be used by the chart @see https://www.amcharts.com/docs/v5/concepts/themes/
30
+ */
31
+ chartThemes?: typeof am5.Theme[];
32
+ /**
33
+ * Settings for chart customization @see https://www.amcharts.com/docs/v5/reference/piechart/#Settings
34
+ */
35
+ chartSettings?: am5percent.IPieChartSettings;
36
+ /**
37
+ * Settings for legend customization @see https://www.amcharts.com/docs/v5/reference/legend/#Settings
38
+ */
39
+ legendSettings?: am5.ILegendSettings;
40
+ /**
41
+ * Settings for legend value labels customization @see https://www.amcharts.com/docs/v5/reference/label/#Settings
42
+ */
43
+ legendValueLabelsSettings?: Partial<am5.ILabelSettings>;
44
+ /**
45
+ * Settings for chart series customization @see https://www.amcharts.com/docs/v5/reference/pieseries/#Settings
46
+ */
47
+ seriesSettings?: am5percent.IPieSeriesSettings;
48
+ /**
49
+ * Settings for series labels customization @see https://www.amcharts.com/docs/v5/reference/pieseries/#Settings
50
+ */
51
+ seriesLabelsSettings?: Partial<am5.IRadialLabelSettings>;
52
+ /**
53
+ * Settings for central label customization, useful for donut charts, if not specified no center label will be shown @see https://www.amcharts.com/docs/v5/reference/radiallabel/#Settings
54
+ */
55
+ centerLabelSettings?: am5.ILabelSettings;
56
+ /**
57
+ * Settings for pie slices customization @see https://www.amcharts.com/docs/v5/reference/slice/#Settings
58
+ */
59
+ slicesSettings?: Partial<am5.ISliceSettings>;
60
+ /**
61
+ * List of adapters to be applied to the slices @see https://www.amcharts.com/docs/v5/concepts/settings/adapters
62
+ */
63
+ sliceAdapters?: SliceAdapter[];
64
+ /**
65
+ * Optional DOM id for the chart container, if not specified it will be automatically generated
66
+ */
67
+ DOMtargetId?: string;
68
+ }
69
+ export declare type SliceAdapter<T extends keyof am5.ISliceSettings = keyof am5.ISliceSettings> = [
70
+ T,
71
+ (context: {
72
+ root: am5.Root;
73
+ chart: am5percent.PieChart;
74
+ series: am5percent.PieSeries;
75
+ }) => (value: am5.ISliceSettings[T], target: am5.Slice, key: T) => am5.ISliceSettings[T]
76
+ ];
77
+ /**
78
+ * Highly customizable pie chart component based on amcharts5
79
+ * @see https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/
80
+ *
81
+ * This component wraps some of the chart configuration trying to make it more react-friendly
82
+ */
83
+ export declare const PieChart: React.FC<PieChartProps>;
@@ -0,0 +1,169 @@
1
+ /*
2
+ * Copyright (c) 2023, J2 Innovations. All Rights Reserved
3
+ */
4
+ import * as am5 from '@amcharts/amcharts5';
5
+ import * as am5percent from '@amcharts/amcharts5/percent';
6
+ import React, { useEffect, useLayoutEffect, useRef, useState } from 'react';
7
+ import { createUseStyles, useTheme } from 'react-jss';
8
+ const useStyles = createUseStyles({
9
+ root: {
10
+ width: '100%',
11
+ height: '100%',
12
+ },
13
+ });
14
+ /**
15
+ * Returns a color palette selecting some colors from the theme.
16
+ * @param theme The theme
17
+ * @returns An array of colors
18
+ */
19
+ const getDefaultChartColors = (theme) => {
20
+ return {
21
+ interfaceColors: {
22
+ text: theme.textColor,
23
+ },
24
+ series: [
25
+ theme.palette.lime,
26
+ theme.palette.cyan,
27
+ theme.palette.red,
28
+ theme.palette.volcano,
29
+ theme.palette.orange,
30
+ theme.palette.gold,
31
+ theme.palette.yellow,
32
+ theme.palette.green,
33
+ theme.palette.purple,
34
+ theme.palette.magenta,
35
+ theme.palette.blue,
36
+ theme.palette.grey,
37
+ ],
38
+ };
39
+ };
40
+ /**
41
+ * Highly customizable pie chart component based on amcharts5
42
+ * @see https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/
43
+ *
44
+ * This component wraps some of the chart configuration trying to make it more react-friendly
45
+ */
46
+ export const PieChart = ({ DOMtargetId, data, colorPalette, numberFormat, chartThemes, chartSettings, legendSettings, legendValueLabelsSettings, seriesSettings, seriesLabelsSettings, centerLabelSettings, slicesSettings, sliceAdapters, }) => {
47
+ // Colors configuration
48
+ const theme = useTheme();
49
+ const colors = { ...getDefaultChartColors(theme), ...colorPalette };
50
+ // Chart lifecycle
51
+ const [id, setId] = useState(DOMtargetId ?? `amchart-${Math.random()}`);
52
+ const rootRef = useRef(null);
53
+ const chartRef = useRef(null);
54
+ const legendRef = useRef(null);
55
+ useEffect(() => {
56
+ if (DOMtargetId && DOMtargetId !== id) {
57
+ setId(DOMtargetId);
58
+ }
59
+ }, [DOMtargetId]);
60
+ // Chart setup
61
+ useLayoutEffect(() => {
62
+ const root = am5.Root.new(id);
63
+ // Setup amcharts theme
64
+ if (chartThemes) {
65
+ root.setThemes(chartThemes.map((t) => t.new(root)));
66
+ }
67
+ // Setup interface colors, see https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/#Interface_colors
68
+ if (colors.interfaceColors) {
69
+ // Remap settings to use amcharts Color objects
70
+ for (const setting in colors.interfaceColors) {
71
+ const color = colors.interfaceColors[setting];
72
+ // Apply defined interfaceColor on the chart
73
+ root.interfaceColors.set(setting, am5.color(color));
74
+ }
75
+ }
76
+ // Setup chart settings
77
+ const chart = root.container.children.push(am5percent.PieChart.new(root, {
78
+ layout: root.verticalLayout,
79
+ ...chartSettings,
80
+ }));
81
+ // Setup legend
82
+ const legend = chart.children.push(am5.Legend.new(root, {
83
+ layout: root.horizontalLayout,
84
+ ...legendSettings,
85
+ }));
86
+ if (legendValueLabelsSettings) {
87
+ legend.valueLabels.template.setAll(legendValueLabelsSettings);
88
+ }
89
+ rootRef.current = root;
90
+ chartRef.current = chart;
91
+ legendRef.current = legend;
92
+ // clean up before component removal from the DOM
93
+ return () => {
94
+ legendRef.current?.dispose();
95
+ legendRef.current = null;
96
+ chartRef.current?.dispose();
97
+ chartRef.current = null;
98
+ root?.dispose();
99
+ rootRef.current = null;
100
+ };
101
+ }, [
102
+ id,
103
+ colors,
104
+ chartThemes,
105
+ chartSettings,
106
+ legendSettings,
107
+ legendValueLabelsSettings,
108
+ ]);
109
+ // Set data
110
+ useEffect(() => {
111
+ const root = rootRef.current;
112
+ const chart = chartRef.current;
113
+ if (chart && root) {
114
+ chart.series.clear();
115
+ if (data?.length) {
116
+ // Setup series
117
+ const series = chart.series.push(am5percent.PieSeries.new(root, {
118
+ valueField: 'value',
119
+ categoryField: 'category',
120
+ ...seriesSettings,
121
+ }));
122
+ // Setup series labels
123
+ if (seriesLabelsSettings) {
124
+ series.labels.template.setAll(seriesLabelsSettings);
125
+ }
126
+ // Setup center label
127
+ if (centerLabelSettings) {
128
+ series.children.push(am5.Label.new(root, {
129
+ ...centerLabelSettings,
130
+ }));
131
+ }
132
+ // Setup series slices
133
+ if (slicesSettings) {
134
+ series.slices.template.setAll(slicesSettings);
135
+ }
136
+ // Setup slice adapters
137
+ if (sliceAdapters) {
138
+ sliceAdapters.forEach(([key, callbackMaker]) => series.slices.template.adapters.add(key, callbackMaker({
139
+ root: root,
140
+ chart: chart,
141
+ series,
142
+ })));
143
+ }
144
+ // Setup series colors
145
+ if (colors?.series) {
146
+ series.get('colors')?.set('colors', colors.series.map((c) => am5.color(c)));
147
+ }
148
+ series.data.setAll(data);
149
+ legendRef.current?.data.setAll(series.dataItems);
150
+ }
151
+ }
152
+ }, [
153
+ data,
154
+ chartRef.current,
155
+ colors?.series,
156
+ seriesSettings,
157
+ slicesSettings,
158
+ seriesLabelsSettings,
159
+ sliceAdapters,
160
+ ]);
161
+ useEffect(() => {
162
+ if (numberFormat) {
163
+ rootRef.current?.numberFormatter.set('numberFormat', numberFormat);
164
+ }
165
+ }, [rootRef.current, numberFormat]);
166
+ const classes = useStyles();
167
+ return React.createElement("div", { id: id, className: classes.root });
168
+ };
169
+ //# sourceMappingURL=PieChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PieChart.js","sourceRoot":"","sources":["../../../../../src/react/components/charts/pie/PieChart.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAA;AAC1C,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AAEzD,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAErD,MAAM,SAAS,GAAG,eAAe,CAAC;IACjC,IAAI,EAAE;QACL,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;KACd;CACD,CAAC,CAAA;AAWF;;;;GAIG;AACH,MAAM,qBAAqB,GAAG,CAAC,KAAe,EAAwB,EAAE;IACvE,OAAO;QACN,eAAe,EAAE;YAChB,IAAI,EAAE,KAAK,CAAC,SAAS;SACrB;QACD,MAAM,EAAE;YACP,KAAK,CAAC,OAAO,CAAC,IAAI;YAClB,KAAK,CAAC,OAAO,CAAC,IAAI;YAClB,KAAK,CAAC,OAAO,CAAC,GAAG;YACjB,KAAK,CAAC,OAAO,CAAC,OAAO;YACrB,KAAK,CAAC,OAAO,CAAC,MAAM;YACpB,KAAK,CAAC,OAAO,CAAC,IAAI;YAClB,KAAK,CAAC,OAAO,CAAC,MAAM;YACpB,KAAK,CAAC,OAAO,CAAC,KAAK;YACnB,KAAK,CAAC,OAAO,CAAC,MAAM;YACpB,KAAK,CAAC,OAAO,CAAC,OAAO;YACrB,KAAK,CAAC,OAAO,CAAC,IAAI;YAClB,KAAK,CAAC,OAAO,CAAC,IAAI;SAClB;KACD,CAAA;AACF,CAAC,CAAA;AA6ED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EACjD,WAAW,EACX,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,EACd,yBAAyB,EACzB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,aAAa,GACb,EAAe,EAAE;IACjB,uBAAuB;IACvB,MAAM,KAAK,GAAa,QAAQ,EAAE,CAAA;IAClC,MAAM,MAAM,GAAG,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,EAAE,GAAG,YAAY,EAAE,CAAA;IAEnE,kBAAkB;IAClB,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,WAAW,IAAI,WAAW,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACvE,MAAM,OAAO,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAA6B,IAAI,CAAC,CAAA;IACzD,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAEjD,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,WAAW,IAAI,WAAW,KAAK,EAAE,EAAE;YACtC,KAAK,CAAC,WAAW,CAAC,CAAA;SAClB;IACF,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,cAAc;IACd,eAAe,CAAC,GAAG,EAAE;QACpB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAE7B,uBAAuB;QACvB,IAAI,WAAW,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SACnD;QAED,wHAAwH;QACxH,IAAI,MAAM,CAAC,eAAe,EAAE;YAC3B,+CAA+C;YAC/C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,eAAe,EAAE;gBAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CACnC,OAA8C,CACpC,CAAA;gBAEX,4CAA4C;gBAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CACvB,OAA8C,EAC9C,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAChB,CAAA;aACD;SACD;QAED,uBAAuB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CACzC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;YAC7B,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,GAAG,aAAa;SAChB,CAAC,CACF,CAAA;QAED,eAAe;QACf,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;YACpB,MAAM,EAAE,IAAI,CAAC,gBAAgB;YAC7B,GAAG,cAAc;SACjB,CAAC,CACF,CAAA;QAED,IAAI,yBAAyB,EAAE;YAC9B,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAA;SAC7D;QAED,OAAO,CAAC,OAAO,GAAG,IAAI,CAAA;QACtB,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAA;QACxB,SAAS,CAAC,OAAO,GAAG,MAAM,CAAA;QAE1B,iDAAiD;QACjD,OAAO,GAAG,EAAE;YACX,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,CAAA;YAC5B,SAAS,CAAC,OAAO,GAAG,IAAI,CAAA;YACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAA;YAC3B,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAA;YACvB,IAAI,EAAE,OAAO,EAAE,CAAA;YACf,OAAO,CAAC,OAAO,GAAG,IAAI,CAAA;QACvB,CAAC,CAAA;IACF,CAAC,EAAE;QACF,EAAE;QACF,MAAM;QACN,WAAW;QACX,aAAa;QACb,cAAc;QACd,yBAAyB;KACzB,CAAC,CAAA;IAEF,WAAW;IACX,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAA;QAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAA;QAE9B,IAAI,KAAK,IAAI,IAAI,EAAE;YAClB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;YAEpB,IAAI,IAAI,EAAE,MAAM,EAAE;gBACjB,eAAe;gBACf,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAC/B,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE;oBAC9B,UAAU,EAAE,OAAO;oBACnB,aAAa,EAAE,UAAU;oBACzB,GAAG,cAAc;iBACjB,CAAC,CACF,CAAA;gBAED,sBAAsB;gBACtB,IAAI,oBAAoB,EAAE;oBACzB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;iBACnD;gBAED,qBAAqB;gBACrB,IAAI,mBAAmB,EAAE;oBACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,CACnB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;wBACnB,GAAG,mBAAmB;qBACtB,CAAC,CACF,CAAA;iBACD;gBAED,sBAAsB;gBACtB,IAAI,cAAc,EAAE;oBACnB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;iBAC7C;gBAED,uBAAuB;gBACvB,IAAI,aAAa,EAAE;oBAClB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,EAAE,CAC9C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAClC,GAAG,EACH,aAAa,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,KAAK;wBACZ,MAAM;qBACN,CAAC,CACF,CACD,CAAA;iBACD;gBAED,sBAAsB;gBACtB,IAAI,MAAM,EAAE,MAAM,EAAE;oBACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CACxB,QAAQ,EACR,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACtC,CAAA;iBACD;gBAED,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACxB,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;aAChD;SACD;IACF,CAAC,EAAE;QACF,IAAI;QACJ,QAAQ,CAAC,OAAO;QAChB,MAAM,EAAE,MAAM;QACd,cAAc;QACd,cAAc;QACd,oBAAoB;QACpB,aAAa;KACb,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,YAAY,EAAE;YACjB,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;SAClE;IACF,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAA;IAEnC,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAC3B,OAAO,6BAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,GAAQ,CAAA;AACpD,CAAC,CAAA"}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { PieChartColorPalette, PieChartSliceData } from './PieChart';
3
+ export interface SimplePieChartProps {
4
+ data: PieChartSliceData[];
5
+ donut?: boolean;
6
+ animated?: boolean;
7
+ colorPalette?: Partial<PieChartColorPalette>;
8
+ tooltipFormat?: string;
9
+ numberFormat?: Intl.NumberFormatOptions;
10
+ hideLabels?: boolean;
11
+ /**
12
+ * Optional DOM id for the chart container, if not specified it will be automatically generated
13
+ */
14
+ DOMtargetId?: string;
15
+ }
16
+ /**
17
+ * Simplified version of the pie chart for quick usage and easy configuration.
18
+ * Serves also as an example of how to use the underlying PieChart component.
19
+ */
20
+ export declare const SimplePieChart: React.FC<SimplePieChartProps>;
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Copyright (c) 2023, J2 Innovations. All Rights Reserved
3
+ */
4
+ import * as am5 from '@amcharts/amcharts5';
5
+ import am5themes_Animated from '@amcharts/amcharts5/themes/Animated';
6
+ import React from 'react';
7
+ import { PieChart } from './PieChart';
8
+ /**
9
+ * Simplified version of the pie chart for quick usage and easy configuration.
10
+ * Serves also as an example of how to use the underlying PieChart component.
11
+ */
12
+ export const SimplePieChart = ({ data, donut, animated, colorPalette, tooltipFormat, numberFormat = {
13
+ style: 'decimal',
14
+ minimumFractionDigits: 0,
15
+ maximumFractionDigits: 1,
16
+ }, hideLabels, DOMtargetId, }) => {
17
+ return (React.createElement(PieChart, { DOMtargetId: DOMtargetId, colorPalette: colorPalette, data: data, chartThemes: animated ? [am5themes_Animated] : undefined, chartSettings: {
18
+ innerRadius: donut ? am5.percent(55) : undefined,
19
+ }, numberFormat: numberFormat, legendSettings: {
20
+ centerX: am5.percent(50),
21
+ x: am5.percent(50),
22
+ }, seriesLabelsSettings: { forceHidden: hideLabels }, seriesSettings: { alignLabels: false }, slicesSettings: {
23
+ tooltipText: tooltipFormat,
24
+ } }));
25
+ };
26
+ //# sourceMappingURL=SimplePieChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimplePieChart.js","sourceRoot":"","sources":["../../../../../src/react/components/charts/pie/SimplePieChart.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAA;AAC1C,OAAO,kBAAkB,MAAM,qCAAqC,CAAA;AACpE,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAA2C,MAAM,YAAY,CAAA;AAgB9E;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAC7D,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,GAAG;IACd,KAAK,EAAE,SAAS;IAChB,qBAAqB,EAAE,CAAC;IACxB,qBAAqB,EAAE,CAAC;CACxB,EACD,UAAU,EACV,WAAW,GACX,EAAe,EAAE;IACjB,OAAO,CACN,oBAAC,QAAQ,IACR,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,EACxD,aAAa,EAAE;YACd,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;SAChD,EACD,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE;YACf,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;SAClB,EACD,oBAAoB,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EACjD,cAAc,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EACtC,cAAc,EAAE;YACf,WAAW,EAAE,aAAa;SAC1B,GACA,CACF,CAAA;AACF,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@j2inn/fin5-ui-utils",
3
- "version": "2.0.3",
3
+ "version": "2.0.5",
4
4
  "description": "A set of useful client-side utilities useful for creating UI applications on top of FIN 5",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -31,6 +31,7 @@
31
31
  "js-yaml": "^4.1.0"
32
32
  },
33
33
  "peerDependencies": {
34
+ "@amcharts/amcharts5": "^5.4.4",
34
35
  "@j2inn/app": "^2.0.0",
35
36
  "@j2inn/resolvable-ui-elements": "^1.0.1",
36
37
  "@j2inn/ui": "^6.0.22",