@j2inn/fin5-ui-utils 6.0.0 → 6.0.1

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.
Files changed (47) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.js +4 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/react/components/charts/QRCode.d.ts +2 -2
  5. package/dist/react/components/charts/QRCode.js +2 -1
  6. package/dist/react/components/charts/QRCode.js.map +1 -1
  7. package/dist/react/components/charts/line-bar/Chart.d.ts +166 -0
  8. package/dist/react/components/charts/line-bar/Chart.js +443 -0
  9. package/dist/react/components/charts/line-bar/Chart.js.map +1 -0
  10. package/dist/react/components/charts/line-bar/HGridChart.d.ts +58 -0
  11. package/dist/react/components/charts/line-bar/HGridChart.js +286 -0
  12. package/dist/react/components/charts/line-bar/HGridChart.js.map +1 -0
  13. package/dist/react/components/charts/pie/PieChart.d.ts +3 -2
  14. package/dist/react/components/charts/pie/PieChart.js +3 -1
  15. package/dist/react/components/charts/pie/PieChart.js.map +1 -1
  16. package/dist/react/components/charts/pie/SimplePieChart.d.ts +3 -2
  17. package/dist/react/components/charts/pie/SimplePieChart.js.map +1 -1
  18. package/dist/react/components/makeCustomElement.d.ts +16 -0
  19. package/dist/react/components/makeCustomElement.js +151 -0
  20. package/dist/react/components/makeCustomElement.js.map +1 -0
  21. package/dist/react/hooks/useScreenSize.d.ts +7 -0
  22. package/dist/react/hooks/useScreenSize.js +32 -0
  23. package/dist/react/hooks/useScreenSize.js.map +1 -0
  24. package/dist_es/index.d.ts +4 -0
  25. package/dist_es/index.js +4 -0
  26. package/dist_es/index.js.map +1 -1
  27. package/dist_es/react/components/charts/QRCode.d.ts +2 -2
  28. package/dist_es/react/components/charts/QRCode.js +1 -2
  29. package/dist_es/react/components/charts/QRCode.js.map +1 -1
  30. package/dist_es/react/components/charts/line-bar/Chart.d.ts +166 -0
  31. package/dist_es/react/components/charts/line-bar/Chart.js +416 -0
  32. package/dist_es/react/components/charts/line-bar/Chart.js.map +1 -0
  33. package/dist_es/react/components/charts/line-bar/HGridChart.d.ts +58 -0
  34. package/dist_es/react/components/charts/line-bar/HGridChart.js +251 -0
  35. package/dist_es/react/components/charts/line-bar/HGridChart.js.map +1 -0
  36. package/dist_es/react/components/charts/pie/PieChart.d.ts +3 -2
  37. package/dist_es/react/components/charts/pie/PieChart.js +3 -1
  38. package/dist_es/react/components/charts/pie/PieChart.js.map +1 -1
  39. package/dist_es/react/components/charts/pie/SimplePieChart.d.ts +3 -2
  40. package/dist_es/react/components/charts/pie/SimplePieChart.js.map +1 -1
  41. package/dist_es/react/components/makeCustomElement.d.ts +16 -0
  42. package/dist_es/react/components/makeCustomElement.js +143 -0
  43. package/dist_es/react/components/makeCustomElement.js.map +1 -0
  44. package/dist_es/react/hooks/useScreenSize.d.ts +7 -0
  45. package/dist_es/react/hooks/useScreenSize.js +28 -0
  46. package/dist_es/react/hooks/useScreenSize.js.map +1 -0
  47. package/package.json +5 -2
@@ -0,0 +1,443 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2025, 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.Chart = exports.LegendPlacement = exports.AxisPlacement = exports.UnitPlacement = void 0;
30
+ const am5 = __importStar(require("@amcharts/amcharts5"));
31
+ const am5xy = __importStar(require("@amcharts/amcharts5/xy"));
32
+ const lodash_1 = require("lodash");
33
+ const react_1 = __importStar(require("react"));
34
+ const react_jss_1 = require("react-jss");
35
+ const useStyles = (0, react_jss_1.createUseStyles)({
36
+ root: {
37
+ width: '100%',
38
+ height: '100%',
39
+ },
40
+ });
41
+ /**
42
+ * Returns a color palette selecting some colors from the theme.
43
+ * @param theme The theme
44
+ * @returns An array of colors
45
+ */
46
+ const getDefaultChartColors = (theme) => {
47
+ return {
48
+ interfaceColors: {
49
+ text: theme.textColor,
50
+ },
51
+ series: [
52
+ theme.palette.lime,
53
+ theme.palette.cyan,
54
+ theme.palette.orange,
55
+ theme.palette.blue,
56
+ theme.palette.volcano,
57
+ theme.palette.green,
58
+ theme.palette.purple,
59
+ theme.palette.magenta,
60
+ theme.palette.grey,
61
+ theme.palette.gold,
62
+ theme.palette.red,
63
+ theme.palette.yellow,
64
+ ],
65
+ };
66
+ };
67
+ const buildYRenderer = (root, opposite = false, gridSettings) => {
68
+ const yRenderer = am5xy.AxisRendererY.new(root, {
69
+ strokeOpacity: 0,
70
+ forceHidden: true,
71
+ opposite,
72
+ });
73
+ yRenderer.grid.template.setAll({
74
+ strokeOpacity: 1,
75
+ ...gridSettings,
76
+ });
77
+ yRenderer.labels.template.setAll({
78
+ fontSize: '0.7rem',
79
+ });
80
+ return yRenderer;
81
+ };
82
+ const buildValueAxis = (root, chart, axes, chartSeriesProps, unitPlacement, gridSettings, valueAxisSettings) => {
83
+ const unit = chartSeriesProps.unit ?? '';
84
+ const cachedAxis = axes.get(unit);
85
+ if (cachedAxis) {
86
+ return cachedAxis;
87
+ }
88
+ const opposite = (chartSeriesProps.axisPlacement ?? AxisPlacement.left) ==
89
+ AxisPlacement.right;
90
+ const renderer = buildYRenderer(root, opposite, gridSettings);
91
+ const axisToSync = axes.values().next()?.value;
92
+ const axis = chart.yAxes.push(am5xy.ValueAxis.new(root, {
93
+ renderer: renderer,
94
+ numberFormat: unitPlacement == UnitPlacement.axis && unit
95
+ ? `#' ${unit}'`
96
+ : undefined,
97
+ marginTop: unitPlacement == UnitPlacement.top ? 15 : 0,
98
+ syncWithAxis: axisToSync,
99
+ visible: chartSeriesProps.hideAxis
100
+ ? !chartSeriesProps.hideAxis
101
+ : true,
102
+ ...valueAxisSettings,
103
+ }));
104
+ if (unitPlacement == UnitPlacement.top) {
105
+ addUnitTextLabels(root, chart, unit, opposite);
106
+ }
107
+ axes.set(unit, axis);
108
+ return axis;
109
+ };
110
+ const addUnitTextLabels = (root, chart, unit, opposite) => {
111
+ if (unit) {
112
+ const unitTextStyle = {
113
+ ignoreFormatting: true,
114
+ fontSize: '0.7rem',
115
+ height: 18,
116
+ marginBottom: 15,
117
+ position: 'absolute',
118
+ };
119
+ const x = am5.percent(!opposite ? 0 : 100);
120
+ const centerX = am5.percent(!opposite ? 0 : 100);
121
+ chart.children.unshift(am5.Label.new(root, {
122
+ text: `[${unit}]`,
123
+ x: x,
124
+ centerX: centerX,
125
+ ...unitTextStyle,
126
+ }));
127
+ }
128
+ };
129
+ const buildLabelText = (unit, numberFormat) => `[bold]{name}[/]: {valueY.formatNumber(${numberFormat ? `"${numberFormat}"` : ''})}${unit ? ` ${unit}` : ''}\n{valueX.formatDate("d MMM HH:mm")}`;
130
+ const addLineSeries = (data, root, chart, xAxis, yAxes, dateField, unitPlacement, legendRef, gridSettings, valueAxisSettings, translateLabel, lineSeriesSettings, tooltipSettings) => {
131
+ data.forEach((lineSeries) => {
132
+ const lineYAxis = buildValueAxis(root, chart, yAxes, lineSeries, unitPlacement, gridSettings, valueAxisSettings);
133
+ const series = chart.series.push(am5xy.LineSeries.new(root, {
134
+ name: lineSeries.dis ??
135
+ translateLabel?.(lineSeries.seriesName) ??
136
+ lineSeries.seriesName,
137
+ xAxis: xAxis,
138
+ yAxis: lineYAxis,
139
+ valueYField: 'value',
140
+ valueXField: dateField,
141
+ fill: lineSeries.strokeSettings?.stroke,
142
+ tooltip: am5.Tooltip.new(root, {
143
+ labelText: buildLabelText(lineSeries.unit, '#.##'),
144
+ }),
145
+ ...lineSeriesSettings,
146
+ ...lineSeries.strokeSettings,
147
+ }));
148
+ if (tooltipSettings) {
149
+ series.get('tooltip')?.label.setAll(tooltipSettings);
150
+ }
151
+ if (lineSeries.strokeSettings) {
152
+ series.strokes.template.setAll(lineSeries.strokeSettings);
153
+ series.fills.template.setAll(lineSeries.strokeSettings);
154
+ }
155
+ series.data.setAll(lineSeries.data);
156
+ legendRef.current?.data.push(series);
157
+ });
158
+ };
159
+ const addBarSeries = (data, root, chart, xAxis, yAxes, dateField, unitPlacement, stacked = false, legendRef, gridSettings, valueAxisSettings, translateLabel, barSeriesSettings, columnSettings, tooltipSettings) => {
160
+ data.forEach((barSeries) => {
161
+ const seriesName = barSeries.seriesName;
162
+ // Setup Y axes, one on the left and one on the right
163
+ const barYAxis = buildValueAxis(root, chart, yAxes, barSeries, unitPlacement, gridSettings, valueAxisSettings);
164
+ const seriesOptions = {
165
+ name: translateLabel?.(seriesName) ?? barSeries.dis ?? seriesName,
166
+ xAxis: xAxis,
167
+ yAxis: barYAxis,
168
+ stacked: stacked,
169
+ tooltip: am5.Tooltip.new(root, {
170
+ labelText: buildLabelText(barSeries.unit),
171
+ }),
172
+ valueYField: 'value',
173
+ valueXField: dateField,
174
+ };
175
+ if (barSeries.stroke) {
176
+ seriesOptions.fill = barSeries.stroke;
177
+ }
178
+ const series = chart.series.push(am5xy.ColumnSeries.new(root, {
179
+ ...seriesOptions,
180
+ ...barSeriesSettings,
181
+ }));
182
+ series.columns.template.setAll({
183
+ ...columnSettings,
184
+ });
185
+ if (tooltipSettings) {
186
+ series.columns.template
187
+ .get('tooltip')
188
+ ?.label.setAll(tooltipSettings);
189
+ }
190
+ series.data.setAll(barSeries.data);
191
+ legendRef.current?.data.push(series);
192
+ });
193
+ };
194
+ const addRanges = (root, axis, rangesData) => {
195
+ rangesData?.forEach((rangeData) => {
196
+ addRange(root, axis, rangeData, rangeData.placeBelow);
197
+ });
198
+ };
199
+ const addRange = (root, axis, rangeData, shifted = false) => {
200
+ const rangeDataItem = axis.makeDataItem({
201
+ value: rangeData.startValue,
202
+ endValue: rangeData.endValue,
203
+ isRange: true,
204
+ });
205
+ axis.createAxisRange(rangeDataItem);
206
+ const axisFill = rangeDataItem.get('axisFill');
207
+ axisFill?.setAll({
208
+ fill: rangeData.color,
209
+ fillOpacity: 0,
210
+ visible: true,
211
+ });
212
+ const label = rangeDataItem.get('label');
213
+ label?.setAll({
214
+ text: rangeData.showText ? rangeData.text : '',
215
+ fill: rangeData.foreground,
216
+ html: rangeData.html,
217
+ fontSize: '0.8rem',
218
+ height: 24,
219
+ location: 0,
220
+ centerX: 0,
221
+ tooltipText: rangeData.tooltip,
222
+ layer: -1,
223
+ background: am5.Rectangle.new(root, {
224
+ fill: rangeData.color,
225
+ fillOpacity: rangeData.opacity ?? 0.2,
226
+ strokeWidth: 1,
227
+ stroke: rangeData.foreground,
228
+ }),
229
+ });
230
+ axisFill?.events.on('boundschanged', (e) => {
231
+ label?.setAll({
232
+ width: e.target.width(),
233
+ maxWidth: e.target.width(),
234
+ oversizedBehavior: 'truncate',
235
+ y: shifted ? 24 : 0,
236
+ });
237
+ });
238
+ };
239
+ const setupLegend = (root, chart, legendPlacement, legendSettings, legendLabelsSettings, legendMarkersSettings) => {
240
+ const legendItem = am5.Legend.new(root, {
241
+ paddingTop: legendPlacement == LegendPlacement.bottom ? 20 : 0,
242
+ paddingBottom: legendPlacement == LegendPlacement.top ? 20 : 0,
243
+ forceHidden: legendPlacement == LegendPlacement.hidden,
244
+ layout: legendPlacement == LegendPlacement.left ||
245
+ legendPlacement == LegendPlacement.right
246
+ ? root.verticalLayout
247
+ : root.gridLayout,
248
+ ...legendSettings,
249
+ });
250
+ // Setup legend
251
+ const legend = legendPlacement == LegendPlacement.left ||
252
+ legendPlacement == LegendPlacement.top
253
+ ? chart.children.unshift(legendItem)
254
+ : chart.children.push(legendItem);
255
+ legend.labels.template.setAll({
256
+ fontSize: '0.8rem',
257
+ ...legendLabelsSettings,
258
+ });
259
+ legend.valueLabels.template.setAll({
260
+ forceHidden: true,
261
+ });
262
+ legend.markers.template.setAll({
263
+ width: 12,
264
+ height: 12,
265
+ ...legendMarkersSettings,
266
+ });
267
+ if (legendMarkersSettings?.rounded) {
268
+ legend.markerRectangles.template.setAll({
269
+ cornerRadiusTL: 100,
270
+ cornerRadiusTR: 100,
271
+ cornerRadiusBL: 100,
272
+ cornerRadiusBR: 100,
273
+ });
274
+ }
275
+ return legend;
276
+ };
277
+ var UnitPlacement;
278
+ (function (UnitPlacement) {
279
+ UnitPlacement["none"] = "none";
280
+ UnitPlacement["top"] = "top";
281
+ UnitPlacement["axis"] = "axis";
282
+ })(UnitPlacement = exports.UnitPlacement || (exports.UnitPlacement = {}));
283
+ var AxisPlacement;
284
+ (function (AxisPlacement) {
285
+ AxisPlacement["left"] = "left";
286
+ AxisPlacement["right"] = "right";
287
+ })(AxisPlacement = exports.AxisPlacement || (exports.AxisPlacement = {}));
288
+ var LegendPlacement;
289
+ (function (LegendPlacement) {
290
+ LegendPlacement["top"] = "top";
291
+ LegendPlacement["bottom"] = "bottom";
292
+ LegendPlacement["left"] = "left";
293
+ LegendPlacement["right"] = "right";
294
+ LegendPlacement["hidden"] = "hidden";
295
+ })(LegendPlacement = exports.LegendPlacement || (exports.LegendPlacement = {}));
296
+ /**
297
+ * Customizable stacked column and line chart component based on amcharts5
298
+ *
299
+ * This component wraps some of the chart configuration trying to make it more react-friendly
300
+ */
301
+ const Chart = ({ DOMtargetId, baseInterval, barSeriesData, stackedBarSeriesData, lineSeriesData, rangesData, dateField, colorPalette, numberFormat, chartThemes, chartSettings, legendSettings, legendLabelsSettings, legendMarkersSettings, dateAxisSettings, dateAxisRendererSettings, valueAxisSettings, gridSettings, barSeriesSettings, lineSeriesSettings, columnSettings, tooltipSettings, cursor = false, unitPlacement = UnitPlacement.none, legendPlacement = LegendPlacement.bottom, translateLabel, }) => {
302
+ // Colors configuration
303
+ const theme = (0, react_jss_1.useTheme)();
304
+ const colors = { ...getDefaultChartColors(theme), ...colorPalette };
305
+ // Chart lifecycle
306
+ const [id, setId] = (0, react_1.useState)(DOMtargetId ?? `amchart-${Math.random()}`);
307
+ const containerRef = (0, react_1.useRef)(null);
308
+ const rootRef = (0, react_1.useRef)(null);
309
+ const chartRef = (0, react_1.useRef)(null);
310
+ const legendRef = (0, react_1.useRef)(null);
311
+ (0, react_1.useEffect)(() => {
312
+ if (DOMtargetId && DOMtargetId !== id) {
313
+ setId(DOMtargetId);
314
+ }
315
+ }, [DOMtargetId]);
316
+ // Chart setup
317
+ (0, react_1.useLayoutEffect)(() => {
318
+ const root = am5.Root.new(id);
319
+ root.autoResize = false;
320
+ // Setup amcharts theme
321
+ if (chartThemes) {
322
+ root.setThemes(chartThemes.map((t) => t.new(root)));
323
+ }
324
+ // Setup interface colors, see https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/#Interface_colors
325
+ if (colors.interfaceColors) {
326
+ // Remap settings to use amcharts Color objects
327
+ for (const setting in colors.interfaceColors) {
328
+ const color = colors.interfaceColors[setting];
329
+ // Apply defined interfaceColor on the chart
330
+ root.interfaceColors.set(setting, am5.color(color));
331
+ }
332
+ }
333
+ // Setup chart settings
334
+ const chart = root.container.children.push(am5xy.XYChart.new(root, {
335
+ layout: legendPlacement == LegendPlacement.left ||
336
+ legendPlacement == LegendPlacement.right
337
+ ? root.horizontalLayout
338
+ : root.verticalLayout,
339
+ paddingLeft: 0,
340
+ paddingRight: 0,
341
+ paddingBottom: 0,
342
+ paddingTop: legendPlacement == LegendPlacement.top ||
343
+ unitPlacement == UnitPlacement.top
344
+ ? 35
345
+ : 10,
346
+ ...chartSettings,
347
+ }));
348
+ // Setup cursor
349
+ if (cursor) {
350
+ chart.set('cursor', am5xy.XYCursor.new(root, {}));
351
+ }
352
+ // Setup series colors
353
+ if (colors?.series) {
354
+ chart.get('colors')?.set('colors', colors.series.map((c) => am5.color(c)));
355
+ }
356
+ const legend = setupLegend(root, chart, legendPlacement, legendSettings, legendLabelsSettings, legendMarkersSettings);
357
+ rootRef.current = root;
358
+ chartRef.current = chart;
359
+ legendRef.current = legend;
360
+ // Clean up before component removal from the DOM
361
+ return () => {
362
+ legendRef.current?.dispose();
363
+ legendRef.current = null;
364
+ chartRef.current?.dispose();
365
+ chartRef.current = null;
366
+ root?.dispose();
367
+ rootRef.current = null;
368
+ };
369
+ }, [id, colors, chartThemes, chartSettings, legendSettings]);
370
+ // Set data
371
+ (0, react_1.useEffect)(() => {
372
+ const root = rootRef.current;
373
+ const chart = chartRef.current;
374
+ if (chart && root) {
375
+ chart.series.clear();
376
+ if (barSeriesData?.length == 0 &&
377
+ stackedBarSeriesData?.length == 0 &&
378
+ lineSeriesData?.length == 0) {
379
+ return;
380
+ }
381
+ // Setup axes
382
+ const xRenderer = am5xy.AxisRendererX.new(root, {
383
+ strokeWidth: 0,
384
+ minGridDistance: 30,
385
+ ...dateAxisRendererSettings,
386
+ });
387
+ const xAxis = chart.xAxes.push(am5xy.DateAxis.new(root, {
388
+ baseInterval,
389
+ renderer: xRenderer,
390
+ ...dateAxisSettings,
391
+ }));
392
+ xRenderer.grid.template.setAll({
393
+ strokeWidth: 0,
394
+ forceHidden: true,
395
+ });
396
+ xRenderer.labels.template.setAll({
397
+ location: 0.5,
398
+ fontSize: '0.7rem',
399
+ textAlign: 'center',
400
+ });
401
+ xAxis.data.setAll(Array.prototype.concat(stackedBarSeriesData ?? [], lineSeriesData ?? [], barSeriesData ?? []));
402
+ addRanges(root, xAxis, rangesData);
403
+ const yAxes = new Map();
404
+ if (barSeriesData) {
405
+ addBarSeries(barSeriesData, root, chart, xAxis, yAxes, dateField, unitPlacement, false, legendRef, gridSettings, valueAxisSettings, translateLabel, barSeriesSettings, columnSettings, tooltipSettings);
406
+ }
407
+ if (stackedBarSeriesData) {
408
+ addBarSeries(stackedBarSeriesData, root, chart, xAxis, yAxes, dateField, unitPlacement, true, legendRef, gridSettings, valueAxisSettings, translateLabel, barSeriesSettings, columnSettings, tooltipSettings);
409
+ }
410
+ if (lineSeriesData) {
411
+ addLineSeries(lineSeriesData, root, chart, xAxis, yAxes, dateField, unitPlacement, legendRef, gridSettings, valueAxisSettings, translateLabel, lineSeriesSettings, tooltipSettings);
412
+ }
413
+ }
414
+ }, [
415
+ stackedBarSeriesData,
416
+ barSeriesData,
417
+ lineSeriesData,
418
+ chartRef.current,
419
+ colors?.series,
420
+ barSeriesSettings,
421
+ lineSeriesSettings,
422
+ ]);
423
+ (0, react_1.useEffect)(() => {
424
+ if (numberFormat) {
425
+ rootRef.current?.numberFormatter.set('numberFormat', numberFormat);
426
+ }
427
+ }, [rootRef.current, numberFormat]);
428
+ (0, react_1.useEffect)(() => {
429
+ let resizeObserver;
430
+ if (containerRef.current) {
431
+ const onResize = (0, lodash_1.debounce)(() => rootRef.current?.resize(), 100);
432
+ resizeObserver = new ResizeObserver(onResize);
433
+ resizeObserver.observe(containerRef.current);
434
+ }
435
+ return () => resizeObserver?.disconnect();
436
+ }, [containerRef.current, rootRef.current]);
437
+ const classes = useStyles();
438
+ return typeof id === 'string' ? (react_1.default.createElement("div", { id: id, className: classes.root })) : (
439
+ // If the DOM target is an HTML element, do not render another div. The chart will be attached to the existing element.
440
+ react_1.default.createElement(react_1.default.Fragment, null));
441
+ };
442
+ exports.Chart = Chart;
443
+ //# sourceMappingURL=Chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chart.js","sourceRoot":"","sources":["../../../../../src/react/components/charts/line-bar/Chart.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import * as am5 from '@amcharts/amcharts5';
2
+ import { ITimeInterval } from '@amcharts/amcharts5/.internal/core/util/Time';
3
+ import { HBool, HDict, HGrid, HNum, HStr, HVal } from 'haystack-core';
4
+ import React from 'react';
5
+ import { BarChartSeriesData, LegendPlacement, LineChartSeriesData, UnitPlacement } from './Chart';
6
+ export declare const rollupDurationToTimeInterval: (value?: HNum) => ITimeInterval;
7
+ export interface HGridChartRange extends HGridChartItemProps {
8
+ startValue: HVal;
9
+ endValue: HVal;
10
+ }
11
+ export interface HGridChartMetadata extends HDict {
12
+ ranges?: HGridChartRange[];
13
+ hisRollupInterval?: HNum;
14
+ }
15
+ export interface HGridChartItemProps extends HDict {
16
+ dis?: HStr;
17
+ color?: HStr;
18
+ opacity?: HNum;
19
+ }
20
+ export interface HGridChartSeriesProps extends HGridChartItemProps {
21
+ series?: HStr;
22
+ variant?: HStr;
23
+ unit?: HStr;
24
+ hideAxis?: HBool;
25
+ axisPlacement?: HStr;
26
+ }
27
+ export interface HGridChartProps {
28
+ className?: string;
29
+ data: HGrid;
30
+ timeRange: [Date, Date];
31
+ timeInterval?: am5.time.ITimeInterval;
32
+ unitPlacement?: UnitPlacement;
33
+ legendPlacement?: LegendPlacement;
34
+ translateLabel?: (name: string) => string | undefined;
35
+ /**
36
+ * Optional DOM id for the chart container, if not specified it will be automatically generated.
37
+ * It can also be an HTMLElement, in that case the element will be used as a parent.
38
+ */
39
+ DOMtargetId?: string | HTMLElement;
40
+ }
41
+ export declare const isLineSeries: (colMetadata?: HGridChartSeriesProps) => boolean;
42
+ export declare const isStackedBarSeries: (colMetadata?: HGridChartSeriesProps) => boolean;
43
+ export declare const isBarSeries: (colMetadata?: HGridChartSeriesProps) => boolean;
44
+ export declare const colNameToDisProvider: (grid: HGrid, translateLabel?: ((name: string) => string | undefined) | undefined) => (colName: string) => string;
45
+ export declare const splitBarAndLineSeriesCols: (grid: HGrid) => {
46
+ barSeries: Set<string>;
47
+ stackedBarSeries: Set<string>;
48
+ lineSeries: Set<string>;
49
+ };
50
+ export declare const getBarSeriesRowData: (row: HDict, metadata: HDict, colName: string, barSeriesData: Map<string, BarChartSeriesData>) => void;
51
+ export declare const addLineSeriesRowData: (row: HDict, metadata: HDict, colName: string, lineSeriesData: Map<string, LineChartSeriesData>) => void;
52
+ export declare const calculateDefaultTimeInterval: (timeRange: [Date, Date]) => am5.time.ITimeInterval;
53
+ /**
54
+ * A component that renders a chart containing multiple series
55
+ * of different kinds, taking all the data and configuration from an HGrid.
56
+ */
57
+ export declare const HGridChart: React.NamedExoticComponent<HGridChartProps>;
58
+ export default HGridChart;