@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.
- package/dist/charts/chartJsRenderer/ChartComponent.d.ts +22 -0
- package/dist/charts/chartJsRenderer/ChartComponent.d.ts.map +1 -0
- package/dist/charts/chartJsRenderer/ChartComponent.js +244 -0
- package/dist/charts/chartJsRenderer/ChartComponent.js.map +1 -0
- package/dist/charts/types.d.ts +2 -17
- package/dist/index.d.ts +3 -4
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/widgets/WidgetComponent.d.ts +10 -0
- package/dist/widgets/WidgetComponent.d.ts.map +1 -0
- package/dist/widgets/WidgetComponent.js +54 -0
- package/dist/widgets/WidgetComponent.js.map +1 -0
- package/dist/widgets/counter/Counter.js +8 -8
- package/dist/widgets/counter/Counter.js.map +1 -1
- package/dist/widgets/custom/useCustomWidget.js +3 -3
- package/dist/widgets/custom/useCustomWidget.js.map +1 -1
- package/dist/widgets/custom/util.js.map +1 -1
- package/dist/widgets/oxford/Oxford.js +3 -1
- package/dist/widgets/oxford/Oxford.js.map +1 -1
- package/dist/widgets/ring/Ring.js +4 -4
- package/dist/widgets/ring/Ring.js.map +1 -1
- package/dist/widgets/scale/Scale.js.map +1 -1
- package/dist/widgets/speedMeter/SpeedMeter.js +3 -1
- package/dist/widgets/speedMeter/SpeedMeter.js.map +1 -1
- package/dist/widgets/tLight/TLight.js +4 -4
- package/dist/widgets/tLight/TLight.js.map +1 -1
- package/dist/widgets/thermometer/Thermometer.js +7 -5
- package/dist/widgets/thermometer/Thermometer.js.map +1 -1
- package/dist/widgets/thermometer/util.js +4 -1
- package/dist/widgets/thermometer/util.js.map +1 -1
- package/dist/widgets/types.d.ts +66 -1
- package/package.json +8 -6
- package/dist/charts/ChartContext.js +0 -6
- package/dist/charts/ChartContext.js.map +0 -1
- package/dist/charts/ChartRenderer.d.ts +0 -17
- package/dist/charts/ChartRenderer.d.ts.map +0 -1
- package/dist/charts/ChartRenderer.js +0 -175
- package/dist/charts/ChartRenderer.js.map +0 -1
- package/dist/charts/horizontalBars/Bar.js +0 -228
- package/dist/charts/horizontalBars/Bar.js.map +0 -1
- package/dist/charts/horizontalBars/HorizontalBars.js +0 -374
- package/dist/charts/horizontalBars/HorizontalBars.js.map +0 -1
- package/dist/charts/linear/LineChart.js +0 -469
- package/dist/charts/linear/LineChart.js.map +0 -1
- package/dist/charts/linear/Node.js +0 -56
- package/dist/charts/linear/Node.js.map +0 -1
- package/dist/charts/pie/Pie.js +0 -183
- package/dist/charts/pie/Pie.js.map +0 -1
- package/dist/charts/pie/Slice.js +0 -96
- package/dist/charts/pie/Slice.js.map +0 -1
- package/dist/charts/pie/usePieAnimation.js +0 -123
- package/dist/charts/pie/usePieAnimation.js.map +0 -1
- package/dist/charts/util/ChartSelector.js +0 -36
- package/dist/charts/util/ChartSelector.js.map +0 -1
- package/dist/charts/util/ColoredLegendItem.js +0 -46
- package/dist/charts/util/ColoredLegendItem.js.map +0 -1
- package/dist/charts/util/EmptyGrid.d.ts +0 -8
- package/dist/charts/util/EmptyGrid.d.ts.map +0 -1
- package/dist/charts/util/EmptyGrid.js +0 -51
- package/dist/charts/util/EmptyGrid.js.map +0 -1
- package/dist/charts/util/LegendContainer.js +0 -54
- package/dist/charts/util/LegendContainer.js.map +0 -1
- package/dist/charts/util/NumberedLegendItem.js +0 -45
- package/dist/charts/util/NumberedLegendItem.js.map +0 -1
- package/dist/charts/util/getBarColor.js +0 -29
- package/dist/charts/util/getBarColor.js.map +0 -1
- package/dist/charts/util/parseMargin.js +0 -11
- package/dist/charts/util/parseMargin.js.map +0 -1
- package/dist/charts/util/useChartStyles.js +0 -35
- package/dist/charts/util/useChartStyles.js.map +0 -1
- package/dist/charts/verticalBars/Bar.js +0 -241
- package/dist/charts/verticalBars/Bar.js.map +0 -1
- package/dist/charts/verticalBars/VerticalBars.js +0 -394
- package/dist/charts/verticalBars/VerticalBars.js.map +0 -1
- package/dist/charts/waterfallBars/WaterfallBar.js +0 -84
- package/dist/charts/waterfallBars/WaterfallBar.js.map +0 -1
- package/dist/charts/waterfallBars/WaterfallBars.js +0 -247
- package/dist/charts/waterfallBars/WaterfallBars.js.map +0 -1
- package/dist/widgets/WidgetContainer.d.ts +0 -10
- package/dist/widgets/WidgetContainer.d.ts.map +0 -1
- package/dist/widgets/WidgetContainer.js +0 -68
- 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;;;;"}
|