@apia/charts 2.0.7 → 2.0.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.
Files changed (82) hide show
  1. package/dist/charts/chartJsRenderer/ChartComponent.d.ts +22 -0
  2. package/dist/charts/chartJsRenderer/ChartComponent.d.ts.map +1 -0
  3. package/dist/charts/chartJsRenderer/ChartComponent.js +244 -0
  4. package/dist/charts/chartJsRenderer/ChartComponent.js.map +1 -0
  5. package/dist/charts/types.d.ts +2 -17
  6. package/dist/index.d.ts +3 -4
  7. package/dist/index.js +2 -3
  8. package/dist/index.js.map +1 -1
  9. package/dist/widgets/WidgetComponent.d.ts +10 -0
  10. package/dist/widgets/WidgetComponent.d.ts.map +1 -0
  11. package/dist/widgets/WidgetComponent.js +54 -0
  12. package/dist/widgets/WidgetComponent.js.map +1 -0
  13. package/dist/widgets/counter/Counter.js +8 -8
  14. package/dist/widgets/counter/Counter.js.map +1 -1
  15. package/dist/widgets/custom/useCustomWidget.js +3 -3
  16. package/dist/widgets/custom/useCustomWidget.js.map +1 -1
  17. package/dist/widgets/custom/util.js.map +1 -1
  18. package/dist/widgets/oxford/Oxford.js +3 -1
  19. package/dist/widgets/oxford/Oxford.js.map +1 -1
  20. package/dist/widgets/ring/Ring.js +4 -4
  21. package/dist/widgets/ring/Ring.js.map +1 -1
  22. package/dist/widgets/scale/Scale.js.map +1 -1
  23. package/dist/widgets/speedMeter/SpeedMeter.js +3 -1
  24. package/dist/widgets/speedMeter/SpeedMeter.js.map +1 -1
  25. package/dist/widgets/tLight/TLight.js +4 -4
  26. package/dist/widgets/tLight/TLight.js.map +1 -1
  27. package/dist/widgets/thermometer/Thermometer.js +7 -5
  28. package/dist/widgets/thermometer/Thermometer.js.map +1 -1
  29. package/dist/widgets/thermometer/util.js +4 -1
  30. package/dist/widgets/thermometer/util.js.map +1 -1
  31. package/dist/widgets/types.d.ts +66 -1
  32. package/package.json +8 -6
  33. package/dist/charts/ChartContext.js +0 -6
  34. package/dist/charts/ChartContext.js.map +0 -1
  35. package/dist/charts/ChartRenderer.d.ts +0 -17
  36. package/dist/charts/ChartRenderer.d.ts.map +0 -1
  37. package/dist/charts/ChartRenderer.js +0 -175
  38. package/dist/charts/ChartRenderer.js.map +0 -1
  39. package/dist/charts/horizontalBars/Bar.js +0 -228
  40. package/dist/charts/horizontalBars/Bar.js.map +0 -1
  41. package/dist/charts/horizontalBars/HorizontalBars.js +0 -374
  42. package/dist/charts/horizontalBars/HorizontalBars.js.map +0 -1
  43. package/dist/charts/linear/LineChart.js +0 -469
  44. package/dist/charts/linear/LineChart.js.map +0 -1
  45. package/dist/charts/linear/Node.js +0 -56
  46. package/dist/charts/linear/Node.js.map +0 -1
  47. package/dist/charts/pie/Pie.js +0 -183
  48. package/dist/charts/pie/Pie.js.map +0 -1
  49. package/dist/charts/pie/Slice.js +0 -96
  50. package/dist/charts/pie/Slice.js.map +0 -1
  51. package/dist/charts/pie/usePieAnimation.js +0 -123
  52. package/dist/charts/pie/usePieAnimation.js.map +0 -1
  53. package/dist/charts/util/ChartSelector.js +0 -36
  54. package/dist/charts/util/ChartSelector.js.map +0 -1
  55. package/dist/charts/util/ColoredLegendItem.js +0 -46
  56. package/dist/charts/util/ColoredLegendItem.js.map +0 -1
  57. package/dist/charts/util/EmptyGrid.d.ts +0 -8
  58. package/dist/charts/util/EmptyGrid.d.ts.map +0 -1
  59. package/dist/charts/util/EmptyGrid.js +0 -51
  60. package/dist/charts/util/EmptyGrid.js.map +0 -1
  61. package/dist/charts/util/LegendContainer.js +0 -54
  62. package/dist/charts/util/LegendContainer.js.map +0 -1
  63. package/dist/charts/util/NumberedLegendItem.js +0 -45
  64. package/dist/charts/util/NumberedLegendItem.js.map +0 -1
  65. package/dist/charts/util/getBarColor.js +0 -29
  66. package/dist/charts/util/getBarColor.js.map +0 -1
  67. package/dist/charts/util/parseMargin.js +0 -11
  68. package/dist/charts/util/parseMargin.js.map +0 -1
  69. package/dist/charts/util/useChartStyles.js +0 -35
  70. package/dist/charts/util/useChartStyles.js.map +0 -1
  71. package/dist/charts/verticalBars/Bar.js +0 -241
  72. package/dist/charts/verticalBars/Bar.js.map +0 -1
  73. package/dist/charts/verticalBars/VerticalBars.js +0 -394
  74. package/dist/charts/verticalBars/VerticalBars.js.map +0 -1
  75. package/dist/charts/waterfallBars/WaterfallBar.js +0 -84
  76. package/dist/charts/waterfallBars/WaterfallBar.js.map +0 -1
  77. package/dist/charts/waterfallBars/WaterfallBars.js +0 -247
  78. package/dist/charts/waterfallBars/WaterfallBars.js.map +0 -1
  79. package/dist/widgets/WidgetContainer.d.ts +0 -10
  80. package/dist/widgets/WidgetContainer.d.ts.map +0 -1
  81. package/dist/widgets/WidgetContainer.js +0 -68
  82. package/dist/widgets/WidgetContainer.js.map +0 -1
@@ -1,469 +0,0 @@
1
- import { jsxs, Fragment, jsx } from '@apia/theme/jsx-runtime';
2
- import { arrayOrArray, useImperativeComponentEvents, usePanAndZoom, usePrevious, getLabel } from '@apia/util';
3
- import { scaleOrdinal, scaleLinear, scaleLog } from '@visx/scale';
4
- import { min, max } from 'd3-array';
5
- import { parseMargin } from '../util/parseMargin.js';
6
- import { useMemo, useState, useLayoutEffect } from 'react';
7
- import { useChartStyles } from '../util/useChartStyles.js';
8
- import { Box, Heading } from '@apia/theme';
9
- import { Grid } from '@visx/visx';
10
- import { Group } from '@visx/group';
11
- import { LinePath } from '@visx/shape';
12
- import { AxisLeft, AxisBottom } from '@visx/axis';
13
- import * as allCurves from '@visx/curve';
14
- import uniqueId from 'lodash-es/uniqueId';
15
- import { Node } from './Node.js';
16
- import { getBarColor } from '../util/getBarColor.js';
17
- import { LegendContainer } from '../util/LegendContainer.js';
18
- import { ApiaUtil } from '@apia/components';
19
-
20
- function adjustDimensions({
21
- width,
22
- height,
23
- maxWidth
24
- }) {
25
- if (width <= maxWidth) {
26
- return { width, height };
27
- }
28
- const ratio = width / height;
29
- const newWidth = maxWidth;
30
- const newHeight = Math.floor(newWidth / ratio);
31
- return { width: newWidth, height: newHeight };
32
- }
33
- function getX(coordinate) {
34
- return coordinate.key;
35
- }
36
- function getY(coordinate) {
37
- return Number(coordinate.value);
38
- }
39
- function parseData(chart) {
40
- const setsArray = arrayOrArray(chart.dataSets?.data).map(
41
- (col) => arrayOrArray(col.sets)
42
- );
43
- let longestLine = [];
44
- let longestLineIndex = -1;
45
- for (let i = 0; i < setsArray.length; i++) {
46
- const array = setsArray[i];
47
- if (!longestLine || array.length > longestLine.length) {
48
- longestLine = array;
49
- longestLineIndex = i;
50
- }
51
- }
52
- const lines = arrayOrArray(chart.dataSets?.data);
53
- const nodesDataArray = lines.map((line) => line.sets);
54
- const nodesData = nodesDataArray.reduce(
55
- (rec, d) => arrayOrArray(rec).concat(d),
56
- []
57
- );
58
- return {
59
- lines,
60
- longestLine,
61
- longestLineIndex,
62
- tallestLine: [...new Set(nodesData.map((value) => value.value))],
63
- xScale: scaleOrdinal({
64
- domain: longestLine.map(getX)
65
- }),
66
- yScale: scaleLinear({
67
- domain: [
68
- (min(nodesData, getY) ?? 0) < 0 ? min(nodesData, getY) ?? 0 : 0,
69
- max(nodesData, getY) ?? 1
70
- ]
71
- }),
72
- yScaleLog: scaleLog({
73
- domain: [
74
- (min(nodesData, getY) ?? 1) > 0 ? min(nodesData, getY) ?? 1 : 1,
75
- max(nodesData, getY) ?? 10
76
- ]
77
- })
78
- };
79
- }
80
- const LineChart = ({
81
- chart,
82
- margin = { top: 20, left: 100, bottom: 24, right: 0 },
83
- chartId,
84
- allowZoom
85
- }) => {
86
- const effectiveMargin = parseMargin(margin);
87
- if (!chart.showAxisYTitle && effectiveMargin.left > 50) {
88
- effectiveMargin.left = 50;
89
- }
90
- let innerWidth = chart.ratio.width - (effectiveMargin.left + effectiveMargin.right) / 2;
91
- let innerHeight = chart.ratio.height - (effectiveMargin.top + effectiveMargin.bottom) / 2;
92
- if (innerWidth > chart.ratio.maxWidth) {
93
- const newValues = adjustDimensions({
94
- height: innerHeight,
95
- width: innerWidth,
96
- maxWidth: chart.ratio.maxWidth
97
- });
98
- innerWidth = newValues.width;
99
- innerHeight = newValues.height;
100
- }
101
- const { lines, xScale, yScale, yScaleLog, longestLine } = parseData(chart);
102
- const styles = useChartStyles(chart.colorSchema);
103
- const coordinates = arrayOrArray(lines[0].sets);
104
- const coordinatesArray = lines.map((col) => {
105
- return col.sets;
106
- });
107
- const divideRangeBetweenStrings = (min2, max2, strings) => {
108
- const numStrings = strings.length;
109
- const step = (max2 - min2) / (numStrings - 1);
110
- const resultArray = [];
111
- let currentValue = min2;
112
- for (let i = 0; i < numStrings; i++) {
113
- resultArray.push(currentValue);
114
- currentValue += step;
115
- }
116
- return resultArray;
117
- };
118
- const xScaleRange = useMemo(() => {
119
- const rangeArr = [
120
- typeof effectiveMargin === "number" ? effectiveMargin : effectiveMargin.left,
121
- innerWidth
122
- ];
123
- return divideRangeBetweenStrings(rangeArr[0], rangeArr[1], longestLine);
124
- }, [effectiveMargin, innerWidth, longestLine]);
125
- xScale.range(xScaleRange);
126
- const yScaleRange = useMemo(() => {
127
- const rangeArr = [
128
- innerHeight - (effectiveMargin.top + effectiveMargin.bottom),
129
- typeof effectiveMargin === "number" ? effectiveMargin : effectiveMargin.top
130
- ];
131
- return rangeArr;
132
- }, [effectiveMargin, innerHeight]);
133
- yScale.range(yScaleRange);
134
- yScaleLog.range([
135
- innerHeight,
136
- typeof effectiveMargin === "number" ? effectiveMargin : effectiveMargin.top
137
- ]);
138
- const [currentCircle, setCurrentCircle] = useState([]);
139
- const actualYScale = useMemo(() => {
140
- return yScale;
141
- }, [yScale]);
142
- const id = useMemo(() => `Linear${uniqueId()}`, []);
143
- useLayoutEffect(() => {
144
- document.querySelectorAll(`#${id} .tickLabel`).forEach((current) => {
145
- const width = current.getBoundingClientRect().width;
146
- current.style.transformOrigin = current.getAttribute("x") + "px 14px";
147
- current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;
148
- });
149
- });
150
- function addNameToProps(names, objects, fixedValue) {
151
- return objects.map((object, index) => {
152
- const nameIndex = Math.floor(index / fixedValue);
153
- const name = names[nameIndex];
154
- return { ...object, columnName: name };
155
- });
156
- }
157
- const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {
158
- const isSingle = arrayOrArray(chart.dataSets.data).length === 1;
159
- const dataColor = data.color !== "" && data.color !== void 0 ? data.color : arrayOrArray(
160
- styles ? styles.schema : [
161
- "#7ad6f4",
162
- "#45bdee",
163
- "#28a7ea",
164
- "#006cbb",
165
- "#034698",
166
- "#032f64"
167
- ]
168
- ).length > 0 ? getBarColor(
169
- arrayOrArray(
170
- styles ? styles.schema : [
171
- "#7ad6f4",
172
- "#45bdee",
173
- "#28a7ea",
174
- "#006cbb",
175
- "#034698",
176
- "#032f64"
177
- ]
178
- ),
179
- index,
180
- isSingle
181
- ) : "";
182
- const returnColumnsArray = [];
183
- arrayOrArray(data.sets).forEach((set) => {
184
- if (set.color !== "" && set.color !== void 0) {
185
- returnColumnsArray.push({ ...set, columnName: data.name });
186
- } else {
187
- returnColumnsArray.push({
188
- ...set,
189
- color: dataColor,
190
- columnName: data.name
191
- });
192
- }
193
- });
194
- return { returnColumnsArray, columnColor: dataColor };
195
- });
196
- const colorReference = arrayOrArray(chart.dataSets.data).map(
197
- (data, index) => {
198
- const isSingle = arrayOrArray(chart.dataSets.data).length === 1;
199
- const dataColor = data.color !== "" && data.color !== void 0 ? data.color : arrayOrArray(
200
- styles ? styles.schema : [
201
- "#7ad6f4",
202
- "#45bdee",
203
- "#28a7ea",
204
- "#006cbb",
205
- "#034698",
206
- "#032f64"
207
- ]
208
- ).length > 0 ? getBarColor(
209
- arrayOrArray(
210
- styles ? styles.schema : [
211
- "#7ad6f4",
212
- "#45bdee",
213
- "#28a7ea",
214
- "#006cbb",
215
- "#034698",
216
- "#032f64"
217
- ]
218
- ),
219
- index,
220
- isSingle
221
- ) : "";
222
- return {
223
- color: dataColor,
224
- title: data.name
225
- };
226
- }
227
- );
228
- arrayOrArray(chart.dataSets.data).map((data) => {
229
- const returnArray = [];
230
- arrayOrArray(data.sets).forEach((set) => {
231
- if (set.color !== "" && set.color !== void 0) {
232
- returnArray.push({
233
- color: set.color,
234
- title: data.name + " - " + set.key
235
- });
236
- }
237
- });
238
- return returnArray;
239
- }).flat().forEach((addRef) => colorReference.push(addRef));
240
- const [highlightedBar, setHighlightedBar] = useState("");
241
- useImperativeComponentEvents({
242
- highlight(barName) {
243
- if (barName.split(" - ").length === 1) {
244
- setHighlightedBar(barName);
245
- } else if (barName.split(" - ").length === 2) {
246
- setHighlightedBar(barName.split(" - ")[0]);
247
- }
248
- }
249
- });
250
- const { boxRef, elementRef } = usePanAndZoom(
251
- void 0,
252
- !allowZoom
253
- );
254
- const coords = coordinatesArray.flat().map((coord) => {
255
- return {
256
- xValue: coord.key,
257
- yValue: coord.value,
258
- x: xScale(getX(coord)),
259
- y: actualYScale(getY(coord))
260
- };
261
- });
262
- const columnNames = lines.map((column) => {
263
- return column.name;
264
- });
265
- const nodes = addNameToProps(columnNames, coords, coordinates.length);
266
- const [nearNodesArray, setNearNodesArray] = useState([]);
267
- const previousNearNodesArray = usePrevious(nearNodesArray);
268
- return /* @__PURE__ */ jsxs(Fragment, { children: [
269
- /* @__PURE__ */ jsx(Box, { id, ref: boxRef, className: "chartBox chartContainer", children: /* @__PURE__ */ jsxs(
270
- "svg",
271
- {
272
- ref: elementRef,
273
- width: innerWidth,
274
- height: innerHeight,
275
- id: "LinesChart",
276
- className: `_${chartId} chart__svg`,
277
- onMouseMove: (ev) => {
278
- const rect = elementRef.current?.getBoundingClientRect();
279
- let clientX = ev.clientX - (effectiveMargin.left + effectiveMargin.right) / 2;
280
- let clientY = ev.clientY - (effectiveMargin.top + effectiveMargin.bottom) / 2;
281
- if (rect) {
282
- clientX = ev.clientX - rect.left;
283
- clientY = ev.clientY - rect.top;
284
- }
285
- const nearNodes = nodes.filter((node) => {
286
- return Math.sqrt((node.x - clientX) ** 2 + (node.y - clientY) ** 2) < 20;
287
- });
288
- if (previousNearNodesArray.current && nearNodes.length > 0) {
289
- const currentColumns = lines.map((col) => {
290
- let colNames = "";
291
- nearNodes.forEach((node) => {
292
- if (col.name === node.columnName) {
293
- colNames = node.columnName;
294
- }
295
- });
296
- return colNames;
297
- }).filter((name) => name !== "");
298
- const currentIndex = coordinates.findIndex((coord) => {
299
- return coord.key === nearNodes[0].xValue;
300
- });
301
- if (currentColumns && currentIndex !== void 0) {
302
- const newCircleValues = currentColumns.map((col) => {
303
- return `${col}${currentIndex}`;
304
- });
305
- setCurrentCircle([...newCircleValues]);
306
- }
307
- setNearNodesArray(nearNodes);
308
- const elementUnderCursor = document.elementFromPoint(
309
- ev.clientX,
310
- ev.clientY
311
- );
312
- if (elementUnderCursor && elementUnderCursor.tagName === "circle") {
313
- if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
314
- new ApiaUtil().tooltips.open({
315
- children: nearNodes.sort((a, b) => Number(b.yValue) - Number(a.yValue)).map((node, i) => {
316
- const useSpecific = colorReference.some(
317
- (ref) => ref.title === node.columnName + " - " + node.xValue
318
- );
319
- return /* @__PURE__ */ jsxs(
320
- Box,
321
- {
322
- children: [
323
- /* @__PURE__ */ jsx(
324
- "div",
325
- {
326
- style: {
327
- color: colorReference[colorReference.findIndex((ref) => {
328
- return ref.title === (useSpecific ? node.columnName + " - " + node.xValue : node.columnName);
329
- })].color
330
- },
331
- children: /* @__PURE__ */ jsx("strong", { children: chart.showAxisXTitle ? node.columnName : chart.showLegend ? node.xValue : "" })
332
- }
333
- ),
334
- chart.showValues && /* @__PURE__ */ jsx("div", { children: node.yValue }),
335
- /* @__PURE__ */ jsx("div", { children: chart.showAxisXTitle && chart.showLegend ? node.xValue : "" }),
336
- nearNodesArray[i + 1] && /* @__PURE__ */ jsx("hr", {})
337
- ]
338
- },
339
- `${node.columnName}_${node.xValue}_${node.yValue}`
340
- );
341
- }),
342
- attachToMousePosition: true
343
- });
344
- }
345
- } else {
346
- new ApiaUtil().tooltips.closeAll();
347
- }
348
- } else if (nearNodes.length === 0) {
349
- setCurrentCircle([]);
350
- }
351
- },
352
- children: [
353
- chart.showGrid && /* @__PURE__ */ jsx(
354
- Grid.Grid,
355
- {
356
- top: (typeof effectiveMargin === "number" ? effectiveMargin : effectiveMargin.top) - 20,
357
- left: 0,
358
- xScale,
359
- yScale: actualYScale,
360
- width: innerWidth,
361
- height: innerHeight,
362
- stroke: styles?.grid.stroke,
363
- strokeOpacity: styles?.grid.opacity
364
- }
365
- ),
366
- lines.map((column, i) => {
367
- const currentCoordinates = arrayOrArray(column.sets);
368
- const newColor = setsWithColor.find(
369
- (data) => data.returnColumnsArray[0].columnName === column.name
370
- )?.columnColor;
371
- return /* @__PURE__ */ jsxs(
372
- Group,
373
- {
374
- top: (typeof effectiveMargin === "number" ? effectiveMargin : effectiveMargin.top) - 20,
375
- style: {
376
- opacity: highlightedBar !== "" && highlightedBar !== column.name ? 0.15 : 1,
377
- transition: "opacity 500ms"
378
- },
379
- children: [
380
- /* @__PURE__ */ jsx(
381
- LinePath,
382
- {
383
- curve: allCurves.curveMonotoneX,
384
- data: currentCoordinates,
385
- x: (coordinate) => {
386
- return xScale(getX(coordinate)) ?? 0;
387
- },
388
- y: (coordinate) => actualYScale(getY(coordinate)) ?? 0,
389
- stroke: newColor ?? "black",
390
- strokeWidth: 2,
391
- strokeOpacity: 1,
392
- shapeRendering: "geometricPrecision",
393
- color: "transparent"
394
- }
395
- ),
396
- currentCoordinates.map((coordinate, j) => {
397
- const key = column.name + j.toString();
398
- const realColor = setsWithColor.map((sets) => sets.returnColumnsArray).flat().find(
399
- (set) => set.columnName === column.name && set.key === coordinate.key
400
- )?.color;
401
- return /* @__PURE__ */ jsxs("g", { children: [
402
- chart.showValues && /* @__PURE__ */ jsx(
403
- "text",
404
- {
405
- x: xScale(getX(coordinate)) + 10,
406
- y: actualYScale(getY(coordinate)) - 5,
407
- textAnchor: "middle",
408
- style: {
409
- display: highlightedBar === column.name ? "block" : "none",
410
- opacity: highlightedBar === column.name ? 1 : 0,
411
- transition: "opacity 500ms"
412
- },
413
- children: coordinate.value
414
- }
415
- ),
416
- /* @__PURE__ */ jsx(
417
- Node,
418
- {
419
- color: realColor ?? "black",
420
- coordinate,
421
- currentCircle,
422
- cx: xScale(getX(coordinate)),
423
- cy: actualYScale(getY(coordinate)),
424
- setCurrentCircle,
425
- innerKey: key,
426
- column
427
- }
428
- )
429
- ] }, key);
430
- })
431
- ]
432
- },
433
- `lines-${column.name + i.toString()}`
434
- );
435
- }),
436
- /* @__PURE__ */ jsx(
437
- AxisLeft,
438
- {
439
- scale: actualYScale,
440
- left: effectiveMargin.left,
441
- label: chart.chartType !== "pie2D" && chart.showAxisYTitle ? chart.axisYTitle : "",
442
- tickLabelProps: {
443
- display: chart.showAxisYTitle ? "auto" : "none"
444
- }
445
- }
446
- ),
447
- /* @__PURE__ */ jsx(
448
- AxisBottom,
449
- {
450
- top: innerHeight - (effectiveMargin.top + effectiveMargin.bottom),
451
- scale: xScale,
452
- label: chart.chartType !== "pie2D" && chart.showAxisXTitle ? chart.axisXTitle : "",
453
- tickLabelProps: { display: "none" },
454
- tickLineProps: { display: "none" },
455
- labelOffset: 10
456
- }
457
- )
458
- ]
459
- }
460
- ) }),
461
- /* @__PURE__ */ jsx(Box, { className: "chartLegend__Wrapper", children: chart.showLegend && colorReference.length !== 0 && /* @__PURE__ */ jsxs(Box, { className: "chart__legend__wrapper", children: [
462
- /* @__PURE__ */ jsx(Heading, { as: "h6", children: getLabel("mnuLeyends").text }),
463
- /* @__PURE__ */ jsx(LegendContainer, { id: chartId, references: colorReference })
464
- ] }) })
465
- ] });
466
- };
467
-
468
- export { LineChart };
469
- //# sourceMappingURL=LineChart.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LineChart.js","sources":["../../../src/charts/linear/LineChart.tsx"],"sourcesContent":["import {\n arrayOrArray,\n getLabel,\n useImperativeComponentEvents,\n usePanAndZoom,\n usePrevious,\n} from '@apia/util';\nimport {\n TApiaChartColorDisposition,\n TApiaChartCoordinate,\n TApiaChartDefinition,\n TChartRendererProps,\n} from '../types';\nimport { scaleLinear, scaleLog, scaleOrdinal } from '@visx/scale';\nimport { min, max } from 'd3-array';\nimport { parseMargin } from '../util/parseMargin';\nimport { useMemo, useState, useLayoutEffect } from 'react';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { Box, Heading } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { LinePath } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport * as allCurves from '@visx/curve';\nimport uniqueId from 'lodash-es/uniqueId';\nimport { Node } from './Node';\nimport { getBarColor } from '../util/getBarColor';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { TChartEvents } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nfunction getX(coordinate: TApiaChartCoordinate) {\n return coordinate.key;\n}\n\nfunction getY(coordinate: TApiaChartCoordinate) {\n return Number(coordinate.value);\n}\n\nfunction parseData(chart: TApiaChartDefinition) {\n const setsArray = arrayOrArray(chart.dataSets?.data).map((col) =>\n arrayOrArray(col.sets),\n );\n let longestLine: TApiaChartCoordinate[] = [];\n let longestLineIndex = -1;\n\n for (let i = 0; i < setsArray.length; i++) {\n const array = setsArray[i];\n if (!longestLine || array.length > longestLine.length) {\n longestLine = array;\n longestLineIndex = i;\n }\n }\n\n const lines = arrayOrArray(chart.dataSets?.data);\n const nodesDataArray = lines.map((line) => line.sets);\n const nodesData = nodesDataArray.reduce<TApiaChartCoordinate[]>(\n (rec, d) => arrayOrArray(rec).concat(d),\n [],\n );\n return {\n lines,\n longestLine,\n longestLineIndex,\n tallestLine: [...new Set(nodesData.map((value) => value.value))],\n xScale: scaleOrdinal<string, number>({\n domain: longestLine.map(getX),\n }),\n yScale: scaleLinear<number>({\n domain: [\n (min(nodesData, getY) ?? 0) < 0 ? min(nodesData, getY) ?? 0 : 0,\n max(nodesData, getY) ?? 1,\n ],\n }),\n yScaleLog: scaleLog<number>({\n domain: [\n (min(nodesData, getY) ?? 1) > 0 ? min(nodesData, getY) ?? 1 : 1,\n max(nodesData, getY) ?? 10,\n ],\n }),\n };\n}\nexport type TLineChartEvents = { highlight: { barName: string } };\n\nexport type TChartNode = {\n x: number;\n y: number;\n xValue: string;\n yValue: string;\n columnName: string;\n};\n\nconst LineChart = ({\n chart,\n margin = { top: 20, left: 100, bottom: 24, right: 0 },\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle && effectiveMargin.left > 50) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width - (effectiveMargin.left + effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const { lines, xScale, yScale, yScaleLog, longestLine } = parseData(chart);\n const styles = useChartStyles(chart.colorSchema);\n const coordinates = arrayOrArray(lines[0].sets);\n const coordinatesArray = lines.map((col) => {\n return col.sets;\n });\n const divideRangeBetweenStrings = (\n min: number,\n max: number,\n strings: TApiaChartCoordinate[] | string[],\n ): number[] => {\n const numStrings = strings.length;\n const step = (max - min) / (numStrings - 1);\n\n const resultArray: number[] = [];\n let currentValue = min;\n\n for (let i = 0; i < numStrings; i++) {\n resultArray.push(currentValue);\n currentValue += step;\n }\n return resultArray;\n };\n const xScaleRange = useMemo(() => {\n const rangeArr = [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ];\n return divideRangeBetweenStrings(rangeArr[0], rangeArr[1], longestLine);\n }, [effectiveMargin, innerWidth, longestLine]);\n\n xScale.range(xScaleRange);\n const yScaleRange = useMemo(() => {\n const rangeArr = [\n innerHeight - (effectiveMargin.top + effectiveMargin.bottom),\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ];\n\n return rangeArr;\n }, [effectiveMargin, innerHeight]);\n\n yScale.range(yScaleRange);\n yScaleLog.range([\n innerHeight,\n typeof effectiveMargin === 'number' ? effectiveMargin : effectiveMargin.top,\n ]);\n\n const [currentCircle, setCurrentCircle] = useState<string[]>([]);\n\n const actualYScale = useMemo(() => {\n return yScale;\n }, [yScale]);\n const id = useMemo(() => `Linear${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\n });\n });\n function addNameToProps(\n names: string[],\n objects: {\n xValue: string;\n yValue: string;\n x: number;\n y: number;\n }[],\n fixedValue: number,\n ) {\n return objects.map((object, index) => {\n const nameIndex = Math.floor(index / fixedValue);\n const name = names[nameIndex];\n return { ...object, columnName: name };\n });\n }\n\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return { returnColumnsArray, columnColor: dataColor };\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n const [highlightedBar, setHighlightedBar] = useState('');\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n if (barName.split(' - ').length === 1) {\n setHighlightedBar(barName);\n } else if (barName.split(' - ').length === 2) {\n setHighlightedBar(barName.split(' - ')[0]);\n }\n },\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const coords = coordinatesArray.flat().map((coord) => {\n return {\n xValue: coord.key,\n yValue: coord.value,\n x: xScale(getX(coord)),\n y: actualYScale(getY(coord)),\n };\n });\n const columnNames = lines.map((column) => {\n return column.name;\n });\n const nodes = addNameToProps(columnNames, coords, coordinates.length);\n\n const [nearNodesArray, setNearNodesArray] = useState<TChartNode[]>([]);\n const previousNearNodesArray = usePrevious(nearNodesArray);\n return (\n <>\n <Box id={id} ref={boxRef} className=\"chartBox chartContainer\">\n <svg\n ref={elementRef}\n width={innerWidth}\n height={innerHeight}\n id=\"LinesChart\"\n className={`_${chartId} chart__svg`}\n onMouseMove={(ev) => {\n const rect = elementRef.current?.getBoundingClientRect();\n\n let clientX =\n ev.clientX - (effectiveMargin.left + effectiveMargin.right) / 2;\n let clientY =\n ev.clientY - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n\n if (rect) {\n clientX = ev.clientX - rect.left;\n clientY = ev.clientY - rect.top;\n }\n const nearNodes = nodes.filter((node) => {\n return (\n Math.sqrt((node.x - clientX) ** 2 + (node.y - clientY) ** 2) <\n 20\n );\n });\n\n if (previousNearNodesArray.current && nearNodes.length > 0) {\n const currentColumns = lines\n .map((col) => {\n let colNames = '';\n nearNodes.forEach((node) => {\n if (col.name === node.columnName) {\n colNames = node.columnName;\n }\n });\n\n return colNames;\n })\n .filter((name) => name !== '');\n const currentIndex = coordinates.findIndex((coord) => {\n return coord.key === nearNodes[0].xValue;\n });\n\n if (currentColumns && currentIndex !== undefined) {\n const newCircleValues = currentColumns.map((col) => {\n return `${col}${currentIndex}`;\n });\n\n setCurrentCircle([...newCircleValues]);\n }\n setNearNodesArray(nearNodes);\n const elementUnderCursor = document.elementFromPoint(\n ev.clientX,\n ev.clientY,\n );\n if (\n elementUnderCursor &&\n elementUnderCursor.tagName === 'circle'\n ) {\n if (\n chart.showAxisXTitle ||\n chart.showLegend ||\n chart.showValues\n ) {\n new ApiaUtil().tooltips.open({\n children: nearNodes\n .sort((a, b) => Number(b.yValue) - Number(a.yValue))\n .map((node, i) => {\n const useSpecific = colorReference.some(\n (ref) =>\n ref.title === node.columnName + ' - ' + node.xValue,\n );\n\n return (\n <Box\n key={`${node.columnName}_${node.xValue}_${node.yValue}`}\n >\n <div\n style={{\n color:\n colorReference[\n colorReference.findIndex((ref) => {\n return (\n ref.title ===\n (useSpecific\n ? node.columnName +\n ' - ' +\n node.xValue\n : node.columnName)\n );\n })\n ].color,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? node.columnName\n : chart.showLegend\n ? node.xValue\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{node.yValue}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend\n ? node.xValue\n : ''}\n </div>\n {nearNodesArray[i + 1] && <hr />}\n </Box>\n );\n }),\n attachToMousePosition: true,\n });\n }\n } else {\n new ApiaUtil().tooltips.closeAll();\n }\n } else if (nearNodes.length === 0) {\n setCurrentCircle([]);\n }\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={0}\n xScale={xScale}\n yScale={actualYScale}\n width={innerWidth}\n height={innerHeight}\n stroke={styles?.grid.stroke}\n strokeOpacity={styles?.grid.opacity}\n />\n )}\n {lines.map((column, i) => {\n const currentCoordinates = arrayOrArray(column.sets);\n const newColor = setsWithColor.find(\n (data) => data.returnColumnsArray[0].columnName === column.name,\n )?.columnColor;\n\n return (\n <Group\n key={`lines-${column.name + i.toString()}`}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n style={{\n opacity:\n highlightedBar !== '' && highlightedBar !== column.name\n ? 0.15\n : 1,\n transition: 'opacity 500ms',\n }}\n >\n <LinePath\n curve={allCurves.curveMonotoneX}\n data={currentCoordinates}\n x={(coordinate) => {\n return xScale(getX(coordinate)) ?? 0;\n }}\n y={(coordinate) => actualYScale(getY(coordinate)) ?? 0}\n stroke={newColor ?? 'black'}\n strokeWidth={2}\n strokeOpacity={1}\n shapeRendering=\"geometricPrecision\"\n color=\"transparent\"\n />\n {currentCoordinates.map((coordinate, j) => {\n const key = column.name + j.toString();\n const realColor = setsWithColor\n .map((sets) => sets.returnColumnsArray)\n .flat()\n .find(\n (set) =>\n set.columnName === column.name &&\n set.key === coordinate.key,\n )?.color;\n\n return (\n <g key={key}>\n {chart.showValues && (\n <text\n x={xScale(getX(coordinate)) + 10}\n y={actualYScale(getY(coordinate)) - 5}\n textAnchor=\"middle\"\n style={{\n display:\n highlightedBar === column.name ? 'block' : 'none',\n opacity: highlightedBar === column.name ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {coordinate.value}\n </text>\n )}\n <Node\n color={realColor ?? 'black'}\n coordinate={coordinate}\n currentCircle={currentCircle}\n cx={xScale(getX(coordinate))}\n cy={actualYScale(getY(coordinate))}\n setCurrentCircle={setCurrentCircle}\n innerKey={key}\n column={column}\n />\n </g>\n );\n })}\n </Group>\n );\n })}\n\n <AxisLeft\n scale={actualYScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n tickLabelProps={{\n display: chart.showAxisYTitle ? 'auto' : 'none',\n }}\n />\n <AxisBottom\n top={innerHeight - (effectiveMargin.top + effectiveMargin.bottom)}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n labelOffset={10}\n />\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {chart.showLegend && colorReference.length !== 0 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer id={chartId} references={colorReference} />\n </Box>\n )}\n </Box>\n </>\n );\n};\nexport { LineChart };\n"],"names":["min","max"],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- import { jsxs, jsx } from '@apia/theme/jsx-runtime';
2
- import { Fragment } from 'react';
3
- import tinycolor from 'tinycolor2';
4
-
5
- const Node = ({
6
- currentCircle,
7
- innerKey,
8
- cx,
9
- cy,
10
- // coordinate,
11
- color,
12
- setCurrentCircle
13
- }) => {
14
- return /* @__PURE__ */ jsxs(Fragment, { children: [
15
- currentCircle.includes(innerKey) && /* @__PURE__ */ jsx(
16
- "circle",
17
- {
18
- r: 6,
19
- cx,
20
- cy,
21
- stroke: `#${tinycolor(color).saturate(25).toHex()}`,
22
- fill: `#${tinycolor(color).saturate(25).toHex()}`
23
- }
24
- ),
25
- /* @__PURE__ */ jsx(
26
- "circle",
27
- {
28
- r: 3,
29
- cx,
30
- cy,
31
- stroke: `#${tinycolor(color).darken(15).toHex()}`,
32
- fill: `#${tinycolor(color).darken(15).toHex()}`
33
- }
34
- ),
35
- /* @__PURE__ */ jsx(
36
- "circle",
37
- {
38
- r: 6,
39
- cx,
40
- cy,
41
- stroke: "transparent",
42
- fill: "transparent",
43
- onMouseEnter: () => {
44
- setCurrentCircle([innerKey]);
45
- },
46
- onMouseLeave: () => {
47
- setCurrentCircle([]);
48
- },
49
- style: { cursor: "pointer" }
50
- }
51
- )
52
- ] }, innerKey);
53
- };
54
-
55
- export { Node };
56
- //# sourceMappingURL=Node.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Node.js","sources":["../../../src/charts/linear/Node.tsx"],"sourcesContent":["import { Fragment } from 'react';\nimport tinycolor from 'tinycolor2';\nimport { TApiaChartColumn, TApiaChartCoordinate } from '../types';\n\nexport const Node = ({\n currentCircle,\n innerKey,\n cx,\n cy,\n // coordinate,\n color,\n setCurrentCircle,\n}: // column,\n{\n currentCircle: string[];\n innerKey: string;\n cx: number;\n cy: number;\n coordinate: TApiaChartCoordinate;\n color: string;\n setCurrentCircle: (value: React.SetStateAction<string[]>) => void;\n column: TApiaChartColumn;\n}) => {\n return (\n <Fragment key={innerKey}>\n {currentCircle.includes(innerKey) && (\n <circle\n r={6}\n cx={cx}\n cy={cy}\n stroke={`#${tinycolor(color).saturate(25).toHex()}`}\n fill={`#${tinycolor(color).saturate(25).toHex()}`}\n />\n )}\n <circle\n r={3}\n cx={cx}\n cy={cy}\n stroke={`#${tinycolor(color).darken(15).toHex()}`}\n fill={`#${tinycolor(color).darken(15).toHex()}`}\n />\n <circle\n r={6}\n cx={cx}\n cy={cy}\n stroke=\"transparent\"\n fill=\"transparent\"\n onMouseEnter={() => {\n setCurrentCircle([innerKey]);\n }}\n onMouseLeave={() => {\n setCurrentCircle([]);\n }}\n style={{ cursor: 'pointer' }}\n />\n </Fragment>\n );\n};\n"],"names":[],"mappings":";;;;AAIO,MAAM,OAAO,CAAC;AAAA,EACnB,aAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AAAA;AAAA,EAEA,KAAA;AAAA,EACA,gBAAA;AACF,CAUM,KAAA;AACJ,EAAA,4BACG,QACE,EAAA,EAAA,QAAA,EAAA;AAAA,IAAc,aAAA,CAAA,QAAA,CAAS,QAAQ,CAC9B,oBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,CAAG,EAAA,CAAA;AAAA,QACH,EAAA;AAAA,QACA,EAAA;AAAA,QACA,MAAA,EAAQ,IAAI,SAAU,CAAA,KAAK,EAAE,QAAS,CAAA,EAAE,CAAE,CAAA,KAAA,EAAO,CAAA,CAAA;AAAA,QACjD,IAAA,EAAM,IAAI,SAAU,CAAA,KAAK,EAAE,QAAS,CAAA,EAAE,CAAE,CAAA,KAAA,EAAO,CAAA,CAAA;AAAA,OAAA;AAAA,KACjD;AAAA,oBAEF,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,CAAG,EAAA,CAAA;AAAA,QACH,EAAA;AAAA,QACA,EAAA;AAAA,QACA,MAAA,EAAQ,IAAI,SAAU,CAAA,KAAK,EAAE,MAAO,CAAA,EAAE,CAAE,CAAA,KAAA,EAAO,CAAA,CAAA;AAAA,QAC/C,IAAA,EAAM,IAAI,SAAU,CAAA,KAAK,EAAE,MAAO,CAAA,EAAE,CAAE,CAAA,KAAA,EAAO,CAAA,CAAA;AAAA,OAAA;AAAA,KAC/C;AAAA,oBACA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,CAAG,EAAA,CAAA;AAAA,QACH,EAAA;AAAA,QACA,EAAA;AAAA,QACA,MAAO,EAAA,aAAA;AAAA,QACP,IAAK,EAAA,aAAA;AAAA,QACL,cAAc,MAAM;AAClB,UAAiB,gBAAA,CAAA,CAAC,QAAQ,CAAC,CAAA,CAAA;AAAA,SAC7B;AAAA,QACA,cAAc,MAAM;AAClB,UAAA,gBAAA,CAAiB,EAAE,CAAA,CAAA;AAAA,SACrB;AAAA,QACA,KAAA,EAAO,EAAE,MAAA,EAAQ,SAAU,EAAA;AAAA,OAAA;AAAA,KAC7B;AAAA,GAAA,EAAA,EA9Ba,QA+Bf,CAAA,CAAA;AAEJ;;;;"}