@semcore/d3-chart 3.18.1 → 3.18.2
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/CHANGELOG.md +7 -1
- package/README.md +1 -1
- package/lib/cjs/Area.js +9 -9
- package/lib/cjs/Axis.js +14 -14
- package/lib/cjs/Bar.js +8 -8
- package/lib/cjs/Bubble.js +10 -10
- package/lib/cjs/Donut.js +7 -7
- package/lib/cjs/Dots.js +10 -10
- package/lib/cjs/HorizontalBar.js +8 -8
- package/lib/cjs/Hover.js +3 -3
- package/lib/cjs/Line.js +13 -11
- package/lib/cjs/Line.js.map +1 -1
- package/lib/cjs/Plot.js +3 -3
- package/lib/cjs/Radar.js +17 -17
- package/lib/cjs/RadialTree.js +10 -10
- package/lib/cjs/ReferenceLine.js +9 -9
- package/lib/cjs/ScatterPlot.js +8 -8
- package/lib/cjs/ScatterPlot.js.map +1 -1
- package/lib/cjs/Tooltip.js +8 -8
- package/lib/cjs/Venn.js +7 -7
- package/lib/cjs/a11y/PlotA11yModule.js +2 -2
- package/lib/cjs/a11y/PlotA11yView.js +2 -2
- package/lib/cjs/component/Chart/AbstractChart.js +420 -0
- package/lib/cjs/component/Chart/AbstractChart.js.map +1 -0
- package/lib/cjs/component/Chart/AbstractChart.type.js +2 -0
- package/lib/cjs/component/Chart/AbstractChart.type.js.map +1 -0
- package/lib/cjs/component/Chart/AreaChart.js +160 -0
- package/lib/cjs/component/Chart/AreaChart.js.map +1 -0
- package/lib/cjs/component/Chart/AreaChart.type.js +2 -0
- package/lib/cjs/component/Chart/AreaChart.type.js.map +1 -0
- package/lib/cjs/component/Chart/BarChart.js +253 -0
- package/lib/cjs/component/Chart/BarChart.js.map +1 -0
- package/lib/cjs/component/Chart/BarChart.type.js +2 -0
- package/lib/cjs/component/Chart/BarChart.type.js.map +1 -0
- package/lib/cjs/component/Chart/BubbleChart.js +145 -0
- package/lib/cjs/component/Chart/BubbleChart.js.map +1 -0
- package/lib/cjs/component/Chart/BubbleChart.type.js +2 -0
- package/lib/cjs/component/Chart/BubbleChart.type.js.map +1 -0
- package/lib/cjs/component/Chart/DonutChart.js +117 -0
- package/lib/cjs/component/Chart/DonutChart.js.map +1 -0
- package/lib/cjs/component/Chart/DonutChart.type.js +2 -0
- package/lib/cjs/component/Chart/DonutChart.type.js.map +1 -0
- package/lib/cjs/component/Chart/HistogramChart.js +189 -0
- package/lib/cjs/component/Chart/HistogramChart.js.map +1 -0
- package/lib/cjs/component/Chart/HistogramChart.type.js +2 -0
- package/lib/cjs/component/Chart/HistogramChart.type.js.map +1 -0
- package/lib/cjs/component/Chart/LineChart.js +147 -0
- package/lib/cjs/component/Chart/LineChart.js.map +1 -0
- package/lib/cjs/component/Chart/LineChart.type.js +2 -0
- package/lib/cjs/component/Chart/LineChart.type.js.map +1 -0
- package/lib/cjs/component/Chart/RadarChart.js +121 -0
- package/lib/cjs/component/Chart/RadarChart.js.map +1 -0
- package/lib/cjs/component/Chart/RadarChart.type.js +2 -0
- package/lib/cjs/component/Chart/RadarChart.type.js.map +1 -0
- package/lib/cjs/component/Chart/ScatterPlotChart.js +159 -0
- package/lib/cjs/component/Chart/ScatterPlotChart.js.map +1 -0
- package/lib/cjs/component/Chart/ScatterPlotChart.type.js +2 -0
- package/lib/cjs/component/Chart/ScatterPlotChart.type.js.map +1 -0
- package/lib/cjs/component/Chart/VennChart.js +144 -0
- package/lib/cjs/component/Chart/VennChart.js.map +1 -0
- package/lib/cjs/component/Chart/VennChart.type.js +2 -0
- package/lib/cjs/component/Chart/VennChart.type.js.map +1 -0
- package/lib/cjs/component/Chart/index.js +28 -0
- package/lib/cjs/component/Chart/index.js.map +1 -0
- package/lib/cjs/component/ChartLegend/BaseLegend.type.js.map +1 -1
- package/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
- package/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js +20 -17
- package/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js.map +1 -1
- package/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js +6 -7
- package/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js.map +1 -1
- package/lib/cjs/component/ChartLegend/LegendTable/legend-table.shadow.css +5 -2
- package/lib/cjs/index.js +7 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/style/donut.shadow.css +3 -0
- package/lib/cjs/types/Line.d.js.map +1 -1
- package/lib/cjs/types/index.d.js +130 -1
- package/lib/cjs/types/index.d.js.map +1 -1
- package/lib/es6/Area.js +9 -9
- package/lib/es6/Axis.js +14 -14
- package/lib/es6/Bar.js +8 -8
- package/lib/es6/Bubble.js +10 -10
- package/lib/es6/Donut.js +7 -7
- package/lib/es6/Dots.js +10 -10
- package/lib/es6/HorizontalBar.js +8 -8
- package/lib/es6/Hover.js +3 -3
- package/lib/es6/Line.js +13 -11
- package/lib/es6/Line.js.map +1 -1
- package/lib/es6/Plot.js +3 -3
- package/lib/es6/Radar.js +17 -17
- package/lib/es6/RadialTree.js +10 -10
- package/lib/es6/ReferenceLine.js +9 -9
- package/lib/es6/ScatterPlot.js +8 -8
- package/lib/es6/ScatterPlot.js.map +1 -1
- package/lib/es6/Tooltip.js +8 -8
- package/lib/es6/Venn.js +7 -7
- package/lib/es6/a11y/PlotA11yModule.js +2 -2
- package/lib/es6/a11y/PlotA11yView.js +2 -2
- package/lib/es6/component/Chart/AbstractChart.js +412 -0
- package/lib/es6/component/Chart/AbstractChart.js.map +1 -0
- package/lib/es6/component/Chart/AbstractChart.type.js +2 -0
- package/lib/es6/component/Chart/AbstractChart.type.js.map +1 -0
- package/lib/es6/component/Chart/AreaChart.js +152 -0
- package/lib/es6/component/Chart/AreaChart.js.map +1 -0
- package/lib/es6/component/Chart/AreaChart.type.js +2 -0
- package/lib/es6/component/Chart/AreaChart.type.js.map +1 -0
- package/lib/es6/component/Chart/BarChart.js +245 -0
- package/lib/es6/component/Chart/BarChart.js.map +1 -0
- package/lib/es6/component/Chart/BarChart.type.js +2 -0
- package/lib/es6/component/Chart/BarChart.type.js.map +1 -0
- package/lib/es6/component/Chart/BubbleChart.js +137 -0
- package/lib/es6/component/Chart/BubbleChart.js.map +1 -0
- package/lib/es6/component/Chart/BubbleChart.type.js +2 -0
- package/lib/es6/component/Chart/BubbleChart.type.js.map +1 -0
- package/lib/es6/component/Chart/DonutChart.js +109 -0
- package/lib/es6/component/Chart/DonutChart.js.map +1 -0
- package/lib/es6/component/Chart/DonutChart.type.js +2 -0
- package/lib/es6/component/Chart/DonutChart.type.js.map +1 -0
- package/lib/es6/component/Chart/HistogramChart.js +181 -0
- package/lib/es6/component/Chart/HistogramChart.js.map +1 -0
- package/lib/es6/component/Chart/HistogramChart.type.js +2 -0
- package/lib/es6/component/Chart/HistogramChart.type.js.map +1 -0
- package/lib/es6/component/Chart/LineChart.js +139 -0
- package/lib/es6/component/Chart/LineChart.js.map +1 -0
- package/lib/es6/component/Chart/LineChart.type.js +2 -0
- package/lib/es6/component/Chart/LineChart.type.js.map +1 -0
- package/lib/es6/component/Chart/RadarChart.js +113 -0
- package/lib/es6/component/Chart/RadarChart.js.map +1 -0
- package/lib/es6/component/Chart/RadarChart.type.js +2 -0
- package/lib/es6/component/Chart/RadarChart.type.js.map +1 -0
- package/lib/es6/component/Chart/ScatterPlotChart.js +151 -0
- package/lib/es6/component/Chart/ScatterPlotChart.js.map +1 -0
- package/lib/es6/component/Chart/ScatterPlotChart.type.js +2 -0
- package/lib/es6/component/Chart/ScatterPlotChart.type.js.map +1 -0
- package/lib/es6/component/Chart/VennChart.js +136 -0
- package/lib/es6/component/Chart/VennChart.js.map +1 -0
- package/lib/es6/component/Chart/VennChart.type.js +2 -0
- package/lib/es6/component/Chart/VennChart.type.js.map +1 -0
- package/lib/es6/component/Chart/index.js +21 -0
- package/lib/es6/component/Chart/index.js.map +1 -0
- package/lib/es6/component/ChartLegend/BaseLegend.type.js.map +1 -1
- package/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
- package/lib/es6/component/ChartLegend/LegendItem/LegendItem.js +20 -17
- package/lib/es6/component/ChartLegend/LegendItem/LegendItem.js.map +1 -1
- package/lib/es6/component/ChartLegend/LegendTable/LegendTable.js +6 -7
- package/lib/es6/component/ChartLegend/LegendTable/LegendTable.js.map +1 -1
- package/lib/es6/component/ChartLegend/LegendTable/legend-table.shadow.css +5 -2
- package/lib/es6/index.js +1 -0
- package/lib/es6/index.js.map +1 -1
- package/lib/es6/style/donut.shadow.css +3 -0
- package/lib/es6/types/Line.d.js.map +1 -1
- package/lib/es6/types/index.d.js +12 -0
- package/lib/es6/types/index.d.js.map +1 -1
- package/lib/types/Line.d.ts +7 -2
- package/lib/types/component/Chart/AbstractChart.d.ts +50 -0
- package/lib/types/component/Chart/AbstractChart.type.d.ts +161 -0
- package/lib/types/component/Chart/AreaChart.d.ts +2 -0
- package/lib/types/component/Chart/AreaChart.type.d.ts +16 -0
- package/lib/types/component/Chart/BarChart.d.ts +2 -0
- package/lib/types/component/Chart/BarChart.type.d.ts +19 -0
- package/lib/types/component/Chart/BubbleChart.d.ts +2 -0
- package/lib/types/component/Chart/BubbleChart.type.d.ts +17 -0
- package/lib/types/component/Chart/DonutChart.d.ts +2 -0
- package/lib/types/component/Chart/DonutChart.type.d.ts +15 -0
- package/lib/types/component/Chart/HistogramChart.d.ts +2 -0
- package/lib/types/component/Chart/HistogramChart.type.d.ts +11 -0
- package/lib/types/component/Chart/LineChart.d.ts +2 -0
- package/lib/types/component/Chart/LineChart.type.d.ts +24 -0
- package/lib/types/component/Chart/RadarChart.d.ts +2 -0
- package/lib/types/component/Chart/RadarChart.type.d.ts +14 -0
- package/lib/types/component/Chart/ScatterPlotChart.d.ts +2 -0
- package/lib/types/component/Chart/ScatterPlotChart.type.d.ts +13 -0
- package/lib/types/component/Chart/VennChart.d.ts +2 -0
- package/lib/types/component/Chart/VennChart.type.d.ts +11 -0
- package/lib/types/component/Chart/index.d.ts +12 -0
- package/lib/types/component/ChartLegend/BaseLegend.type.d.ts +2 -2
- package/lib/types/index.d.ts +13 -0
- package/package.json +2 -2
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.LineChart = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
12
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
13
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
14
|
+
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
|
17
|
+
var _core = _interopRequireDefault(require("@semcore/core"));
|
|
18
|
+
var _d3Scale = require("d3-scale");
|
|
19
|
+
var _ = require("../..");
|
|
20
|
+
var _AbstractChart2 = require("./AbstractChart");
|
|
21
|
+
var _flexBox = require("@semcore/flex-box");
|
|
22
|
+
var _typography = require("@semcore/typography");
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
var LineChartComponent = /*#__PURE__*/function (_AbstractChart) {
|
|
25
|
+
(0, _inherits2["default"])(LineChartComponent, _AbstractChart);
|
|
26
|
+
var _super = (0, _createSuper2["default"])(LineChartComponent);
|
|
27
|
+
function LineChartComponent() {
|
|
28
|
+
(0, _classCallCheck2["default"])(this, LineChartComponent);
|
|
29
|
+
return _super.apply(this, arguments);
|
|
30
|
+
}
|
|
31
|
+
(0, _createClass2["default"])(LineChartComponent, [{
|
|
32
|
+
key: "xScale",
|
|
33
|
+
get: function get() {
|
|
34
|
+
var _this$asProps = this.asProps,
|
|
35
|
+
xScale = _this$asProps.xScale,
|
|
36
|
+
_this$asProps$marginY = _this$asProps.marginY,
|
|
37
|
+
marginY = _this$asProps$marginY === void 0 ? 30 : _this$asProps$marginY,
|
|
38
|
+
plotWidth = _this$asProps.plotWidth,
|
|
39
|
+
data = _this$asProps.data,
|
|
40
|
+
groupKey = _this$asProps.groupKey;
|
|
41
|
+
if (xScale) {
|
|
42
|
+
return xScale;
|
|
43
|
+
}
|
|
44
|
+
var testItem = data[0][groupKey];
|
|
45
|
+
var range = [marginY, plotWidth - this.plotPadding];
|
|
46
|
+
var domain = (0, _.minMax)(data, groupKey);
|
|
47
|
+
if (testItem instanceof Date && !Number.isNaN(testItem.getMilliseconds())) {
|
|
48
|
+
return (0, _d3Scale.scaleTime)(domain, range);
|
|
49
|
+
}
|
|
50
|
+
return (0, _d3Scale.scaleLinear)(domain, range);
|
|
51
|
+
}
|
|
52
|
+
}, {
|
|
53
|
+
key: "yScale",
|
|
54
|
+
get: function get() {
|
|
55
|
+
var _this$asProps2 = this.asProps,
|
|
56
|
+
yScale = _this$asProps2.yScale,
|
|
57
|
+
_this$asProps2$margin = _this$asProps2.marginX,
|
|
58
|
+
marginX = _this$asProps2$margin === void 0 ? 30 : _this$asProps2$margin,
|
|
59
|
+
plotHeight = _this$asProps2.plotHeight;
|
|
60
|
+
if (yScale) {
|
|
61
|
+
return yScale;
|
|
62
|
+
}
|
|
63
|
+
var flatValues = (0, _get2["default"])((0, _getPrototypeOf2["default"])(LineChartComponent.prototype), "flatValues", this);
|
|
64
|
+
var max = Math.max.apply(Math, (0, _toConsumableArray2["default"])(flatValues));
|
|
65
|
+
var min = Math.min.apply(Math, (0, _toConsumableArray2["default"])(flatValues));
|
|
66
|
+
return (0, _d3Scale.scaleLinear)().range([plotHeight - marginX, this.plotPadding]).domain([min, max]);
|
|
67
|
+
}
|
|
68
|
+
}, {
|
|
69
|
+
key: "renderChart",
|
|
70
|
+
value: function renderChart() {
|
|
71
|
+
var _this$asProps3 = this.asProps,
|
|
72
|
+
groupKey = _this$asProps3.groupKey,
|
|
73
|
+
curve = _this$asProps3.curve,
|
|
74
|
+
showDots = _this$asProps3.showDots,
|
|
75
|
+
area = _this$asProps3.area,
|
|
76
|
+
areaCurve = _this$asProps3.areaCurve;
|
|
77
|
+
var _this$state = this.state,
|
|
78
|
+
dataDefinitions = _this$state.dataDefinitions,
|
|
79
|
+
highlightedLine = _this$state.highlightedLine;
|
|
80
|
+
return dataDefinitions.map(function (item, index) {
|
|
81
|
+
return item.checked && /*#__PURE__*/_react["default"].createElement(_.Line, {
|
|
82
|
+
x: groupKey.toString(),
|
|
83
|
+
y: item.id,
|
|
84
|
+
key: item.id,
|
|
85
|
+
color: item.color,
|
|
86
|
+
transparent: highlightedLine !== -1 && highlightedLine !== index,
|
|
87
|
+
curve: curve
|
|
88
|
+
}, showDots && /*#__PURE__*/_react["default"].createElement(_.Line.Dots, {
|
|
89
|
+
display: true
|
|
90
|
+
}), (area === null || area === void 0 ? void 0 : area[item.id]) && /*#__PURE__*/_react["default"].createElement(_.Line.Area, {
|
|
91
|
+
area: area[item.id],
|
|
92
|
+
y0: 'y0',
|
|
93
|
+
y1: 'y1',
|
|
94
|
+
curve: areaCurve
|
|
95
|
+
}));
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}, {
|
|
99
|
+
key: "renderTooltip",
|
|
100
|
+
value: function renderTooltip() {
|
|
101
|
+
var _this = this;
|
|
102
|
+
var _this$asProps4 = this.asProps,
|
|
103
|
+
data = _this$asProps4.data,
|
|
104
|
+
groupKey = _this$asProps4.groupKey,
|
|
105
|
+
showTotalInTooltip = _this$asProps4.showTotalInTooltip,
|
|
106
|
+
showTooltip = _this$asProps4.showTooltip;
|
|
107
|
+
var dataDefinitions = this.state.dataDefinitions;
|
|
108
|
+
if (!showTooltip) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
return /*#__PURE__*/_react["default"].createElement(_.HoverLine.Tooltip, {
|
|
112
|
+
x: groupKey,
|
|
113
|
+
wMin: 100
|
|
114
|
+
}, function (_ref) {
|
|
115
|
+
var _dataItem$groupKey;
|
|
116
|
+
var xIndex = _ref.xIndex;
|
|
117
|
+
var dataItem = data[xIndex];
|
|
118
|
+
var total = _this.totalValue(dataItem);
|
|
119
|
+
return {
|
|
120
|
+
children: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_.HoverLine.Tooltip.Title, null, (_dataItem$groupKey = dataItem[groupKey]) === null || _dataItem$groupKey === void 0 ? void 0 : _dataItem$groupKey.toString()), dataDefinitions.map(function (item) {
|
|
121
|
+
return item.checked && /*#__PURE__*/_react["default"].createElement(_flexBox.Flex, {
|
|
122
|
+
justifyContent: "space-between",
|
|
123
|
+
key: item.id
|
|
124
|
+
}, /*#__PURE__*/_react["default"].createElement(_.HoverLine.Tooltip.Dot, {
|
|
125
|
+
mr: 4,
|
|
126
|
+
color: item.color
|
|
127
|
+
}, item.label), /*#__PURE__*/_react["default"].createElement(_typography.Text, {
|
|
128
|
+
bold: true
|
|
129
|
+
}, _this.tooltipValueFormatter(dataItem[item.id])));
|
|
130
|
+
}), showTotalInTooltip === true && /*#__PURE__*/_react["default"].createElement(_flexBox.Flex, {
|
|
131
|
+
mt: 2,
|
|
132
|
+
justifyContent: "space-between"
|
|
133
|
+
}, /*#__PURE__*/_react["default"].createElement(_flexBox.Box, {
|
|
134
|
+
mr: 4
|
|
135
|
+
}, "Total"), /*#__PURE__*/_react["default"].createElement(_typography.Text, {
|
|
136
|
+
bold: true
|
|
137
|
+
}, total)))
|
|
138
|
+
};
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}]);
|
|
142
|
+
return LineChartComponent;
|
|
143
|
+
}(_AbstractChart2.AbstractChart);
|
|
144
|
+
(0, _defineProperty2["default"])(LineChartComponent, "displayName", 'Chart.Line');
|
|
145
|
+
var LineChart = (0, _core["default"])(LineChartComponent);
|
|
146
|
+
exports.LineChart = LineChart;
|
|
147
|
+
//# sourceMappingURL=LineChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LineChart.js","names":["_react","_interopRequireDefault","require","_core","_d3Scale","_","_AbstractChart2","_flexBox","_typography","LineChartComponent","_AbstractChart","_inherits2","_super","_createSuper2","_classCallCheck2","apply","arguments","_createClass2","key","get","_this$asProps","asProps","xScale","_this$asProps$marginY","marginY","plotWidth","data","groupKey","testItem","range","plotPadding","domain","minMax","Date","Number","isNaN","getMilliseconds","scaleTime","scaleLinear","_this$asProps2","yScale","_this$asProps2$margin","marginX","plotHeight","flatValues","_get2","_getPrototypeOf2","prototype","max","Math","_toConsumableArray2","min","value","renderChart","_this$asProps3","curve","showDots","area","areaCurve","_this$state","state","dataDefinitions","highlightedLine","map","item","index","checked","createElement","Line","x","toString","y","id","color","transparent","Dots","display","Area","y0","y1","renderTooltip","_this","_this$asProps4","showTotalInTooltip","showTooltip","HoverLine","Tooltip","wMin","_ref","_dataItem$groupKey","xIndex","dataItem","total","totalValue","children","Fragment","Title","Flex","justifyContent","Dot","mr","label","Text","bold","tooltipValueFormatter","mt","Box","AbstractChart","_defineProperty2","LineChart","createComponent","exports"],"sources":["../../../../src/component/Chart/LineChart.tsx"],"sourcesContent":["import React from 'react';\nimport createComponent from '@semcore/core';\nimport { LineChartData, LineChartProps, LineChartType } from './LineChart.type';\nimport { ScaleLinear, scaleLinear, scaleTime } from 'd3-scale';\n// @ts-ignore\nimport { Line, minMax, HoverLine } from '../..';\nimport { AbstractChart } from './AbstractChart';\nimport { Box, Flex } from '@semcore/flex-box';\nimport { Text } from '@semcore/typography';\n\nclass LineChartComponent extends AbstractChart<LineChartData, LineChartProps> {\n static displayName = 'Chart.Line';\n\n protected get xScale() {\n const { xScale, marginY = 30, plotWidth, data, groupKey } = this.asProps;\n\n if (xScale) {\n return xScale;\n }\n\n const testItem = data[0][groupKey];\n const range = [marginY, plotWidth - this.plotPadding];\n const domain = minMax(data, groupKey);\n\n if (testItem instanceof Date && !Number.isNaN(testItem.getMilliseconds())) {\n return scaleTime(domain, range);\n }\n\n return scaleLinear(domain, range);\n }\n\n protected get yScale(): ScaleLinear<any, any> {\n const { yScale, marginX = 30, plotHeight } = this.asProps;\n\n if (yScale) {\n return yScale;\n }\n\n const flatValues = super.flatValues;\n\n const max = Math.max(...flatValues);\n const min = Math.min(...flatValues);\n\n return scaleLinear()\n .range([plotHeight - marginX, this.plotPadding])\n .domain([min, max]);\n }\n\n protected renderChart() {\n const { groupKey, curve, showDots, area, areaCurve } = this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n return dataDefinitions.map((item, index) => {\n return (\n item.checked && (\n <Line\n x={groupKey.toString()}\n y={item.id}\n key={item.id}\n color={item.color}\n transparent={highlightedLine !== -1 && highlightedLine !== index}\n curve={curve}\n >\n {showDots && <Line.Dots display />}\n {area?.[item.id] && (\n <Line.Area area={area[item.id]} y0={'y0'} y1={'y1'} curve={areaCurve} />\n )}\n </Line>\n )\n );\n });\n }\n\n protected renderTooltip() {\n const { data, groupKey, showTotalInTooltip, showTooltip } = this.asProps;\n const { dataDefinitions } = this.state;\n\n if (!showTooltip) {\n return null;\n }\n\n return (\n <HoverLine.Tooltip x={groupKey} wMin={100}>\n {({ xIndex }: any) => {\n const dataItem = data[xIndex];\n const total = this.totalValue(dataItem);\n\n return {\n children: (\n <>\n <HoverLine.Tooltip.Title>{dataItem[groupKey]?.toString()}</HoverLine.Tooltip.Title>\n\n {dataDefinitions.map((item) => {\n return (\n item.checked && (\n <Flex justifyContent='space-between' key={item.id}>\n <HoverLine.Tooltip.Dot mr={4} color={item.color}>\n {item.label}\n </HoverLine.Tooltip.Dot>\n <Text bold>{this.tooltipValueFormatter(dataItem[item.id])}</Text>\n </Flex>\n )\n );\n })}\n\n {showTotalInTooltip === true && (\n <Flex mt={2} justifyContent='space-between'>\n <Box mr={4}>Total</Box>\n <Text bold>{total}</Text>\n </Flex>\n )}\n </>\n ),\n };\n }}\n </HoverLine.Tooltip>\n );\n }\n}\n\nexport const LineChart: LineChartType = createComponent(LineChartComponent);\n"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AAEA,IAAAG,CAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AAJA;AAAA,IAMMO,kBAAkB,0BAAAC,cAAA;EAAA,IAAAC,UAAA,aAAAF,kBAAA,EAAAC,cAAA;EAAA,IAAAE,MAAA,OAAAC,aAAA,aAAAJ,kBAAA;EAAA,SAAAA,mBAAA;IAAA,IAAAK,gBAAA,mBAAAL,kBAAA;IAAA,OAAAG,MAAA,CAAAG,KAAA,OAAAC,SAAA;EAAA;EAAA,IAAAC,aAAA,aAAAR,kBAAA;IAAAS,GAAA;IAAAC,GAAA,EAGtB,SAAAA,IAAA,EAAuB;MACrB,IAAAC,aAAA,GAA4D,IAAI,CAACC,OAAO;QAAhEC,MAAM,GAAAF,aAAA,CAANE,MAAM;QAAAC,qBAAA,GAAAH,aAAA,CAAEI,OAAO;QAAPA,OAAO,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA;QAAEE,SAAS,GAAAL,aAAA,CAATK,SAAS;QAAEC,IAAI,GAAAN,aAAA,CAAJM,IAAI;QAAEC,QAAQ,GAAAP,aAAA,CAARO,QAAQ;MAEvD,IAAIL,MAAM,EAAE;QACV,OAAOA,MAAM;MACf;MAEA,IAAMM,QAAQ,GAAGF,IAAI,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC;MAClC,IAAME,KAAK,GAAG,CAACL,OAAO,EAAEC,SAAS,GAAG,IAAI,CAACK,WAAW,CAAC;MACrD,IAAMC,MAAM,GAAG,IAAAC,QAAM,EAACN,IAAI,EAAEC,QAAQ,CAAC;MAErC,IAAIC,QAAQ,YAAYK,IAAI,IAAI,CAACC,MAAM,CAACC,KAAK,CAACP,QAAQ,CAACQ,eAAe,EAAE,CAAC,EAAE;QACzE,OAAO,IAAAC,kBAAS,EAACN,MAAM,EAAEF,KAAK,CAAC;MACjC;MAEA,OAAO,IAAAS,oBAAW,EAACP,MAAM,EAAEF,KAAK,CAAC;IACnC;EAAC;IAAAX,GAAA;IAAAC,GAAA,EAED,SAAAA,IAAA,EAA8C;MAC5C,IAAAoB,cAAA,GAA6C,IAAI,CAAClB,OAAO;QAAjDmB,MAAM,GAAAD,cAAA,CAANC,MAAM;QAAAC,qBAAA,GAAAF,cAAA,CAAEG,OAAO;QAAPA,OAAO,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA;QAAEE,UAAU,GAAAJ,cAAA,CAAVI,UAAU;MAExC,IAAIH,MAAM,EAAE;QACV,OAAOA,MAAM;MACf;MAEA,IAAMI,UAAU,OAAAC,KAAA,iBAAAC,gBAAA,aAAArC,kBAAA,CAAAsC,SAAA,sBAAmB;MAEnC,IAAMC,GAAG,GAAGC,IAAI,CAACD,GAAG,CAAAjC,KAAA,CAARkC,IAAI,MAAAC,mBAAA,aAAQN,UAAU,EAAC;MACnC,IAAMO,GAAG,GAAGF,IAAI,CAACE,GAAG,CAAApC,KAAA,CAARkC,IAAI,MAAAC,mBAAA,aAAQN,UAAU,EAAC;MAEnC,OAAO,IAAAN,oBAAW,GAAE,CACjBT,KAAK,CAAC,CAACc,UAAU,GAAGD,OAAO,EAAE,IAAI,CAACZ,WAAW,CAAC,CAAC,CAC/CC,MAAM,CAAC,CAACoB,GAAG,EAAEH,GAAG,CAAC,CAAC;IACvB;EAAC;IAAA9B,GAAA;IAAAkC,KAAA,EAED,SAAAC,YAAA,EAAwB;MACtB,IAAAC,cAAA,GAAuD,IAAI,CAACjC,OAAO;QAA3DM,QAAQ,GAAA2B,cAAA,CAAR3B,QAAQ;QAAE4B,KAAK,GAAAD,cAAA,CAALC,KAAK;QAAEC,QAAQ,GAAAF,cAAA,CAARE,QAAQ;QAAEC,IAAI,GAAAH,cAAA,CAAJG,IAAI;QAAEC,SAAS,GAAAJ,cAAA,CAATI,SAAS;MAClD,IAAAC,WAAA,GAA6C,IAAI,CAACC,KAAK;QAA/CC,eAAe,GAAAF,WAAA,CAAfE,eAAe;QAAEC,eAAe,GAAAH,WAAA,CAAfG,eAAe;MAExC,OAAOD,eAAe,CAACE,GAAG,CAAC,UAACC,IAAI,EAAEC,KAAK,EAAK;QAC1C,OACED,IAAI,CAACE,OAAO,iBACVlE,MAAA,YAAAmE,aAAA,CAAC9D,CAAA,CAAA+D,IAAI;UACHC,CAAC,EAAE1C,QAAQ,CAAC2C,QAAQ,EAAG;UACvBC,CAAC,EAAEP,IAAI,CAACQ,EAAG;UACXtD,GAAG,EAAE8C,IAAI,CAACQ,EAAG;UACbC,KAAK,EAAET,IAAI,CAACS,KAAM;UAClBC,WAAW,EAAEZ,eAAe,KAAK,CAAC,CAAC,IAAIA,eAAe,KAAKG,KAAM;UACjEV,KAAK,EAAEA;QAAM,GAEZC,QAAQ,iBAAIxD,MAAA,YAAAmE,aAAA,CAAC9D,CAAA,CAAA+D,IAAI,CAACO,IAAI;UAACC,OAAO;QAAA,EAAG,EACjC,CAAAnB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAGO,IAAI,CAACQ,EAAE,CAAC,kBACdxE,MAAA,YAAAmE,aAAA,CAAC9D,CAAA,CAAA+D,IAAI,CAACS,IAAI;UAACpB,IAAI,EAAEA,IAAI,CAACO,IAAI,CAACQ,EAAE,CAAE;UAACM,EAAE,EAAE,IAAK;UAACC,EAAE,EAAE,IAAK;UAACxB,KAAK,EAAEG;QAAU,EACtE,CAEJ;MAEL,CAAC,CAAC;IACJ;EAAC;IAAAxC,GAAA;IAAAkC,KAAA,EAED,SAAA4B,cAAA,EAA0B;MAAA,IAAAC,KAAA;MACxB,IAAAC,cAAA,GAA4D,IAAI,CAAC7D,OAAO;QAAhEK,IAAI,GAAAwD,cAAA,CAAJxD,IAAI;QAAEC,QAAQ,GAAAuD,cAAA,CAARvD,QAAQ;QAAEwD,kBAAkB,GAAAD,cAAA,CAAlBC,kBAAkB;QAAEC,WAAW,GAAAF,cAAA,CAAXE,WAAW;MACvD,IAAQvB,eAAe,GAAK,IAAI,CAACD,KAAK,CAA9BC,eAAe;MAEvB,IAAI,CAACuB,WAAW,EAAE;QAChB,OAAO,IAAI;MACb;MAEA,oBACEpF,MAAA,YAAAmE,aAAA,CAAC9D,CAAA,CAAAgF,SAAS,CAACC,OAAO;QAACjB,CAAC,EAAE1C,QAAS;QAAC4D,IAAI,EAAE;MAAI,GACvC,UAAAC,IAAA,EAAqB;QAAA,IAAAC,kBAAA;QAAA,IAAlBC,MAAM,GAAAF,IAAA,CAANE,MAAM;QACR,IAAMC,QAAQ,GAAGjE,IAAI,CAACgE,MAAM,CAAC;QAC7B,IAAME,KAAK,GAAGX,KAAI,CAACY,UAAU,CAACF,QAAQ,CAAC;QAEvC,OAAO;UACLG,QAAQ,eACN9F,MAAA,YAAAmE,aAAA,CAAAnE,MAAA,YAAA+F,QAAA,qBACE/F,MAAA,YAAAmE,aAAA,CAAC9D,CAAA,CAAAgF,SAAS,CAACC,OAAO,CAACU,KAAK,SAAAP,kBAAA,GAAEE,QAAQ,CAAChE,QAAQ,CAAC,cAAA8D,kBAAA,uBAAlBA,kBAAA,CAAoBnB,QAAQ,EAAE,CAA2B,EAElFT,eAAe,CAACE,GAAG,CAAC,UAACC,IAAI,EAAK;YAC7B,OACEA,IAAI,CAACE,OAAO,iBACVlE,MAAA,YAAAmE,aAAA,CAAC5D,QAAA,CAAA0F,IAAI;cAACC,cAAc,EAAC,eAAe;cAAChF,GAAG,EAAE8C,IAAI,CAACQ;YAAG,gBAChDxE,MAAA,YAAAmE,aAAA,CAAC9D,CAAA,CAAAgF,SAAS,CAACC,OAAO,CAACa,GAAG;cAACC,EAAE,EAAE,CAAE;cAAC3B,KAAK,EAAET,IAAI,CAACS;YAAM,GAC7CT,IAAI,CAACqC,KAAK,CACW,eACxBrG,MAAA,YAAAmE,aAAA,CAAC3D,WAAA,CAAA8F,IAAI;cAACC,IAAI;YAAA,GAAEtB,KAAI,CAACuB,qBAAqB,CAACb,QAAQ,CAAC3B,IAAI,CAACQ,EAAE,CAAC,CAAC,CAAQ,CAEpE;UAEL,CAAC,CAAC,EAEDW,kBAAkB,KAAK,IAAI,iBAC1BnF,MAAA,YAAAmE,aAAA,CAAC5D,QAAA,CAAA0F,IAAI;YAACQ,EAAE,EAAE,CAAE;YAACP,cAAc,EAAC;UAAe,gBACzClG,MAAA,YAAAmE,aAAA,CAAC5D,QAAA,CAAAmG,GAAG;YAACN,EAAE,EAAE;UAAE,GAAC,OAAK,CAAM,eACvBpG,MAAA,YAAAmE,aAAA,CAAC3D,WAAA,CAAA8F,IAAI;YAACC,IAAI;UAAA,GAAEX,KAAK,CAAQ,CAE5B;QAGP,CAAC;MACH,CAAC,CACiB;IAExB;EAAC;EAAA,OAAAnF,kBAAA;AAAA,EA3G8BkG,6BAAa;AAAA,IAAAC,gBAAA,aAAxCnG,kBAAkB,iBACD,YAAY;AA6G5B,IAAMoG,SAAwB,GAAG,IAAAC,gBAAe,EAACrG,kBAAkB,CAAC;AAACsG,OAAA,CAAAF,SAAA,GAAAA,SAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LineChart.type.js","names":[],"sources":["../../../../src/component/Chart/LineChart.type.ts"],"sourcesContent":["import { Intergalactic } from '@semcore/core';\nimport { Flex } from '@semcore/flex-box';\nimport { interpolateValue } from '../../utils';\nimport { ScaleLinear, ScaleTime } from 'd3-scale';\nimport { CurveFactory } from 'd3-shape';\nimport { BaseChartProps } from './AbstractChart.type';\nimport { LegendItemKey } from '../ChartLegend/LegendItem/LegendItem.type';\n\ntype AreaItem = {\n x: number;\n y0: number;\n y1: number;\n};\n\nexport type LineChartData = Array<Record<string, string | number | typeof interpolateValue | Date>>;\n\nexport type LineChartProps = BaseChartProps<LineChartData> & {\n groupKey: string;\n area?: Record<LegendItemKey, AreaItem[]>;\n xScale?: ScaleLinear<any, any> | ScaleTime<any, any>;\n yScale?: ScaleLinear<any, any>;\n showDots?: boolean;\n curve?: CurveFactory;\n areaCurve?: CurveFactory;\n};\n\nexport type LineChartType = Intergalactic.Component<typeof Flex, LineChartProps>;\n"],"mappings":""}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.RadarChart = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
12
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
13
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
14
|
+
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
15
|
+
var _react = _interopRequireDefault(require("react"));
|
|
16
|
+
var _core = _interopRequireDefault(require("@semcore/core"));
|
|
17
|
+
var _d3Scale = require("d3-scale");
|
|
18
|
+
var _AbstractChart2 = require("./AbstractChart");
|
|
19
|
+
var _ = require("../..");
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
var RadarChartComponent = /*#__PURE__*/function (_AbstractChart) {
|
|
22
|
+
(0, _inherits2["default"])(RadarChartComponent, _AbstractChart);
|
|
23
|
+
var _super = (0, _createSuper2["default"])(RadarChartComponent);
|
|
24
|
+
function RadarChartComponent() {
|
|
25
|
+
(0, _classCallCheck2["default"])(this, RadarChartComponent);
|
|
26
|
+
return _super.apply(this, arguments);
|
|
27
|
+
}
|
|
28
|
+
(0, _createClass2["default"])(RadarChartComponent, [{
|
|
29
|
+
key: "renderChart",
|
|
30
|
+
value: function renderChart() {
|
|
31
|
+
var _this$asProps = this.asProps,
|
|
32
|
+
groupKey = _this$asProps.groupKey,
|
|
33
|
+
showDots = _this$asProps.showDots,
|
|
34
|
+
circle = _this$asProps.circle;
|
|
35
|
+
var _this$state = this.state,
|
|
36
|
+
dataDefinitions = _this$state.dataDefinitions,
|
|
37
|
+
highlightedLine = _this$state.highlightedLine;
|
|
38
|
+
return /*#__PURE__*/_react["default"].createElement(_.Radar, {
|
|
39
|
+
scale: this.xScale,
|
|
40
|
+
type: circle ? 'circle' : undefined
|
|
41
|
+
}, /*#__PURE__*/_react["default"].createElement(_.Radar.Axis, {
|
|
42
|
+
dataKey: groupKey
|
|
43
|
+
}, /*#__PURE__*/_react["default"].createElement(_.Radar.Axis.Ticks, null), /*#__PURE__*/_react["default"].createElement(_.Radar.Axis.Labels, null)), dataDefinitions.map(function (item) {
|
|
44
|
+
return item.checked && /*#__PURE__*/_react["default"].createElement(_.Radar.Polygon, {
|
|
45
|
+
dataKey: item.id,
|
|
46
|
+
key: item.id,
|
|
47
|
+
color: item.color
|
|
48
|
+
}, /*#__PURE__*/_react["default"].createElement(_.Radar.Polygon.Line, null), showDots && /*#__PURE__*/_react["default"].createElement(_.Radar.Polygon.Dots, null));
|
|
49
|
+
}), this.renderRadarTooltip());
|
|
50
|
+
}
|
|
51
|
+
}, {
|
|
52
|
+
key: "renderRadarTooltip",
|
|
53
|
+
value: function renderRadarTooltip() {
|
|
54
|
+
var _this = this;
|
|
55
|
+
var _this$asProps2 = this.asProps,
|
|
56
|
+
data = _this$asProps2.data,
|
|
57
|
+
groupKey = _this$asProps2.groupKey,
|
|
58
|
+
showTooltip = _this$asProps2.showTooltip;
|
|
59
|
+
var dataDefinitions = this.state.dataDefinitions;
|
|
60
|
+
if (!showTooltip) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return /*#__PURE__*/_react["default"].createElement(_.Radar.Tooltip, {
|
|
64
|
+
wMin: 100
|
|
65
|
+
}, function (_ref) {
|
|
66
|
+
var _data$groupKey;
|
|
67
|
+
var index = _ref.index;
|
|
68
|
+
return {
|
|
69
|
+
children: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_.Radar.Tooltip.Title, null, (_data$groupKey = data[groupKey]) === null || _data$groupKey === void 0 ? void 0 : _data$groupKey[index]), dataDefinitions.map(function (item) {
|
|
70
|
+
var _data$item$id;
|
|
71
|
+
var value = (_data$item$id = data[item.id]) === null || _data$item$id === void 0 ? void 0 : _data$item$id[index];
|
|
72
|
+
return item.checked && /*#__PURE__*/_react["default"].createElement(_.Radar.Tooltip.Dot, {
|
|
73
|
+
color: item.color,
|
|
74
|
+
key: item.id
|
|
75
|
+
}, _this.tooltipValueFormatter(value));
|
|
76
|
+
}))
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// By default, tooltip will render in Plot component.
|
|
82
|
+
// In RadarChart, we need to render it in Radar component, so we use renderRadarTooltip method
|
|
83
|
+
}, {
|
|
84
|
+
key: "renderTooltip",
|
|
85
|
+
value: function renderTooltip() {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}, {
|
|
89
|
+
key: "dataKeys",
|
|
90
|
+
get: function get() {
|
|
91
|
+
var _this$props = this.props,
|
|
92
|
+
data = _this$props.data,
|
|
93
|
+
groupKey = _this$props.groupKey;
|
|
94
|
+
var legendKeys = Object.keys(data).filter(function (key) {
|
|
95
|
+
return key !== groupKey;
|
|
96
|
+
});
|
|
97
|
+
return legendKeys;
|
|
98
|
+
}
|
|
99
|
+
}, {
|
|
100
|
+
key: "xScale",
|
|
101
|
+
get: function get() {
|
|
102
|
+
var _this$asProps$scale;
|
|
103
|
+
return (_this$asProps$scale = this.asProps.scale) !== null && _this$asProps$scale !== void 0 ? _this$asProps$scale : (0, _d3Scale.scaleLinear)().domain(this.domain);
|
|
104
|
+
}
|
|
105
|
+
}, {
|
|
106
|
+
key: "yScale",
|
|
107
|
+
get: function get() {
|
|
108
|
+
var _this$asProps$scale2;
|
|
109
|
+
return (_this$asProps$scale2 = this.asProps.scale) !== null && _this$asProps$scale2 !== void 0 ? _this$asProps$scale2 : (0, _d3Scale.scaleLinear)().domain(this.domain);
|
|
110
|
+
}
|
|
111
|
+
}, {
|
|
112
|
+
key: "domain",
|
|
113
|
+
get: function get() {
|
|
114
|
+
return [Math.min.apply(Math, (0, _toConsumableArray2["default"])((0, _get2["default"])((0, _getPrototypeOf2["default"])(RadarChartComponent.prototype), "flatValues", this))), Math.max.apply(Math, (0, _toConsumableArray2["default"])((0, _get2["default"])((0, _getPrototypeOf2["default"])(RadarChartComponent.prototype), "flatValues", this)))];
|
|
115
|
+
}
|
|
116
|
+
}]);
|
|
117
|
+
return RadarChartComponent;
|
|
118
|
+
}(_AbstractChart2.AbstractChart);
|
|
119
|
+
var RadarChart = (0, _core["default"])(RadarChartComponent);
|
|
120
|
+
exports.RadarChart = RadarChart;
|
|
121
|
+
//# sourceMappingURL=RadarChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadarChart.js","names":["_react","_interopRequireDefault","require","_core","_d3Scale","_AbstractChart2","_","RadarChartComponent","_AbstractChart","_inherits2","_super","_createSuper2","_classCallCheck2","apply","arguments","_createClass2","key","value","renderChart","_this$asProps","asProps","groupKey","showDots","circle","_this$state","state","dataDefinitions","highlightedLine","createElement","Radar","scale","xScale","type","undefined","Axis","dataKey","Ticks","Labels","map","item","checked","Polygon","id","color","Line","Dots","renderRadarTooltip","_this","_this$asProps2","data","showTooltip","Tooltip","wMin","_ref","_data$groupKey","index","children","Fragment","Title","_data$item$id","Dot","tooltipValueFormatter","renderTooltip","get","_this$props","props","legendKeys","Object","keys","filter","_this$asProps$scale","scaleLinear","domain","_this$asProps$scale2","Math","min","_toConsumableArray2","_get2","_getPrototypeOf2","prototype","max","AbstractChart","RadarChart","createComponent","exports"],"sources":["../../../../src/component/Chart/RadarChart.tsx"],"sourcesContent":["import React from 'react';\nimport createComponent from '@semcore/core';\nimport { scaleLinear, ScaleLinear } from 'd3-scale';\nimport { AbstractChart } from './AbstractChart';\nimport { RadarChartData, RadarChartProps, RadarChartType } from './RadarChart.type';\n// @ts-ignore\nimport { Radar } from '../..';\n\nclass RadarChartComponent extends AbstractChart<RadarChartData, RadarChartProps> {\n protected renderChart(): React.ReactNode {\n const { groupKey, showDots, circle } = this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n return (\n <Radar scale={this.xScale} type={circle ? 'circle' : undefined}>\n <Radar.Axis dataKey={groupKey}>\n <Radar.Axis.Ticks />\n <Radar.Axis.Labels />\n </Radar.Axis>\n\n {dataDefinitions.map((item) => {\n return (\n item.checked && (\n <Radar.Polygon dataKey={item.id} key={item.id} color={item.color}>\n <Radar.Polygon.Line />\n {showDots && <Radar.Polygon.Dots />}\n </Radar.Polygon>\n )\n );\n })}\n {this.renderRadarTooltip()}\n </Radar>\n );\n }\n\n protected renderRadarTooltip(): React.ReactNode {\n const { data, groupKey, showTooltip } = this.asProps;\n const { dataDefinitions } = this.state;\n\n if (!showTooltip) {\n return null;\n }\n\n return (\n <Radar.Tooltip wMin={100}>\n {({ index }: any) => {\n return {\n children: (\n <>\n <Radar.Tooltip.Title>{data[groupKey]?.[index]}</Radar.Tooltip.Title>\n\n {dataDefinitions.map((item) => {\n const value = data[item.id]?.[index];\n\n return (\n item.checked && (\n <Radar.Tooltip.Dot color={item.color} key={item.id}>\n {this.tooltipValueFormatter(value)}\n </Radar.Tooltip.Dot>\n )\n );\n })}\n </>\n ),\n };\n }}\n </Radar.Tooltip>\n );\n }\n\n // By default, tooltip will render in Plot component.\n // In RadarChart, we need to render it in Radar component, so we use renderRadarTooltip method\n protected renderTooltip(): React.ReactNode {\n return null;\n }\n\n protected get dataKeys(): string[] {\n const { data, groupKey } = this.props;\n\n const legendKeys: string[] = Object.keys(data).filter((key) => key !== groupKey);\n\n return legendKeys;\n }\n\n protected get xScale(): ScaleLinear<any, any> {\n return this.asProps.scale ?? scaleLinear().domain(this.domain);\n }\n\n protected get yScale(): ScaleLinear<any, any> {\n return this.asProps.scale ?? scaleLinear().domain(this.domain);\n }\n\n private get domain(): [number, number] {\n return [Math.min(...super.flatValues), Math.max(...super.flatValues)];\n }\n}\n\nexport const RadarChart: RadarChartType = createComponent(RadarChartComponent);\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadarChart.type.js","names":[],"sources":["../../../../src/component/Chart/RadarChart.type.ts"],"sourcesContent":["import { Intergalactic } from '@semcore/core';\nimport { Flex } from '@semcore/flex-box';\nimport { ScaleLinear } from 'd3-scale';\nimport { BaseChartProps } from './AbstractChart.type';\n\nexport type RadarChartData = Record<string, string[] | number[]>;\n\nexport type RadarChartProps = BaseChartProps<RadarChartData> & {\n groupKey: string;\n scale?: ScaleLinear<any, any>;\n xScale?: never;\n yScale?: never;\n showDots?: boolean;\n circle?: boolean;\n};\n\nexport type RadarChartType = Intergalactic.Component<typeof Flex, RadarChartProps>;\n"],"mappings":""}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ScatterPlotChart = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
+
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
var _react = _interopRequireDefault(require("react"));
|
|
16
|
+
var _core = _interopRequireDefault(require("@semcore/core"));
|
|
17
|
+
var _d3Scale = require("d3-scale");
|
|
18
|
+
var _ = require("../..");
|
|
19
|
+
var _AbstractChart2 = require("./AbstractChart");
|
|
20
|
+
var _typography = require("@semcore/typography");
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
var ScatterPlotChartComponent = /*#__PURE__*/function (_AbstractChart) {
|
|
23
|
+
(0, _inherits2["default"])(ScatterPlotChartComponent, _AbstractChart);
|
|
24
|
+
var _super = (0, _createSuper2["default"])(ScatterPlotChartComponent);
|
|
25
|
+
function ScatterPlotChartComponent() {
|
|
26
|
+
(0, _classCallCheck2["default"])(this, ScatterPlotChartComponent);
|
|
27
|
+
return _super.apply(this, arguments);
|
|
28
|
+
}
|
|
29
|
+
(0, _createClass2["default"])(ScatterPlotChartComponent, [{
|
|
30
|
+
key: "dataKeys",
|
|
31
|
+
get: function get() {
|
|
32
|
+
var _this$props = this.props,
|
|
33
|
+
data = _this$props.data,
|
|
34
|
+
groupKey = _this$props.groupKey,
|
|
35
|
+
valueKey = _this$props.valueKey;
|
|
36
|
+
return Object.keys(data[0]).filter(function (key) {
|
|
37
|
+
return key !== groupKey && key !== valueKey;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}, {
|
|
41
|
+
key: "xScale",
|
|
42
|
+
get: function get() {
|
|
43
|
+
var _this$asProps = this.asProps,
|
|
44
|
+
xScale = _this$asProps.xScale,
|
|
45
|
+
_this$asProps$marginY = _this$asProps.marginY,
|
|
46
|
+
marginY = _this$asProps$marginY === void 0 ? 30 : _this$asProps$marginY,
|
|
47
|
+
plotWidth = _this$asProps.plotWidth,
|
|
48
|
+
data = _this$asProps.data,
|
|
49
|
+
groupKey = _this$asProps.groupKey;
|
|
50
|
+
if (xScale) {
|
|
51
|
+
return xScale;
|
|
52
|
+
}
|
|
53
|
+
var testItem = data[0][groupKey];
|
|
54
|
+
var range = [marginY, plotWidth - this.plotPadding];
|
|
55
|
+
var domain = (0, _.minMax)(data, groupKey);
|
|
56
|
+
if (testItem instanceof Date && !Number.isNaN(testItem.getMilliseconds())) {
|
|
57
|
+
return (0, _d3Scale.scaleTime)([domain[0] * 0.8, domain[1] * 1.2], range);
|
|
58
|
+
}
|
|
59
|
+
return (0, _d3Scale.scaleLinear)([domain[0] * 0.8, domain[1] * 1.2], range);
|
|
60
|
+
}
|
|
61
|
+
}, {
|
|
62
|
+
key: "yScale",
|
|
63
|
+
get: function get() {
|
|
64
|
+
var _this$asProps2 = this.asProps,
|
|
65
|
+
yScale = _this$asProps2.yScale,
|
|
66
|
+
_this$asProps2$margin = _this$asProps2.marginX,
|
|
67
|
+
marginX = _this$asProps2$margin === void 0 ? 30 : _this$asProps2$margin,
|
|
68
|
+
plotHeight = _this$asProps2.plotHeight;
|
|
69
|
+
if (yScale) {
|
|
70
|
+
return yScale;
|
|
71
|
+
}
|
|
72
|
+
var flatValues = this.flatValues;
|
|
73
|
+
var max = Math.max.apply(Math, (0, _toConsumableArray2["default"])(flatValues));
|
|
74
|
+
var min = Math.min.apply(Math, (0, _toConsumableArray2["default"])(flatValues));
|
|
75
|
+
return (0, _d3Scale.scaleLinear)().range([plotHeight - marginX, this.plotPadding]).domain([min * 0.8, max * 1.1]);
|
|
76
|
+
}
|
|
77
|
+
}, {
|
|
78
|
+
key: "flatValues",
|
|
79
|
+
get: function get() {
|
|
80
|
+
var _this$asProps3 = this.asProps,
|
|
81
|
+
data = _this$asProps3.data,
|
|
82
|
+
groupKey = _this$asProps3.groupKey,
|
|
83
|
+
valueKey = _this$asProps3.valueKey;
|
|
84
|
+
var flatValues = data.reduce(function (result, item) {
|
|
85
|
+
Object.entries(item).forEach(function (_ref) {
|
|
86
|
+
var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
|
|
87
|
+
key = _ref2[0],
|
|
88
|
+
value = _ref2[1];
|
|
89
|
+
if (key !== groupKey && key !== valueKey && typeof value === 'number') {
|
|
90
|
+
result.add(value);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return result;
|
|
94
|
+
}, new Set());
|
|
95
|
+
return flatValues;
|
|
96
|
+
}
|
|
97
|
+
}, {
|
|
98
|
+
key: "renderChart",
|
|
99
|
+
value: function renderChart() {
|
|
100
|
+
var _this$asProps4 = this.asProps,
|
|
101
|
+
groupKey = _this$asProps4.groupKey,
|
|
102
|
+
valueKey = _this$asProps4.valueKey;
|
|
103
|
+
var dataDefinitions = this.state.dataDefinitions;
|
|
104
|
+
return dataDefinitions.map(function (item) {
|
|
105
|
+
return item.checked && /*#__PURE__*/_react["default"].createElement(_.ScatterPlot, {
|
|
106
|
+
x: groupKey,
|
|
107
|
+
y: item.id,
|
|
108
|
+
key: item.id,
|
|
109
|
+
color: item.color,
|
|
110
|
+
value: valueKey
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}, {
|
|
115
|
+
key: "renderTooltip",
|
|
116
|
+
value: function renderTooltip() {
|
|
117
|
+
var _this = this;
|
|
118
|
+
var _this$asProps5 = this.asProps,
|
|
119
|
+
data = _this$asProps5.data,
|
|
120
|
+
groupKey = _this$asProps5.groupKey,
|
|
121
|
+
showTooltip = _this$asProps5.showTooltip;
|
|
122
|
+
var dataDefinitions = this.state.dataDefinitions;
|
|
123
|
+
if (!showTooltip) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
return dataDefinitions.filter(function (item) {
|
|
127
|
+
return item.checked;
|
|
128
|
+
}).map(function (item) {
|
|
129
|
+
return /*#__PURE__*/_react["default"].createElement(_.ScatterPlot.Tooltip, {
|
|
130
|
+
key: item.id,
|
|
131
|
+
x: groupKey,
|
|
132
|
+
y: item.id,
|
|
133
|
+
wMin: 100
|
|
134
|
+
}, function (_ref3) {
|
|
135
|
+
var index = _ref3.index,
|
|
136
|
+
x = _ref3.x,
|
|
137
|
+
y = _ref3.y;
|
|
138
|
+
return {
|
|
139
|
+
children: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_.ScatterPlot.Tooltip.Dot, {
|
|
140
|
+
color: item.color
|
|
141
|
+
}, "Data"), /*#__PURE__*/_react["default"].createElement(_typography.Text, {
|
|
142
|
+
tag: "div"
|
|
143
|
+
}, "X axis ", _this.tooltipValueFormatter(data[index][x])), /*#__PURE__*/_react["default"].createElement(_typography.Text, {
|
|
144
|
+
tag: "div"
|
|
145
|
+
}, "Y axis ", _this.tooltipValueFormatter(data[index][y])))
|
|
146
|
+
};
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}]);
|
|
151
|
+
return ScatterPlotChartComponent;
|
|
152
|
+
}(_AbstractChart2.AbstractChart);
|
|
153
|
+
(0, _defineProperty2["default"])(ScatterPlotChartComponent, "displayName", 'Chart.ScatterPlot');
|
|
154
|
+
(0, _defineProperty2["default"])(ScatterPlotChartComponent, "defaultProps", {
|
|
155
|
+
showLegend: false
|
|
156
|
+
});
|
|
157
|
+
var ScatterPlotChart = (0, _core["default"])(ScatterPlotChartComponent);
|
|
158
|
+
exports.ScatterPlotChart = ScatterPlotChart;
|
|
159
|
+
//# sourceMappingURL=ScatterPlotChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScatterPlotChart.js","names":["_react","_interopRequireDefault","require","_core","_d3Scale","_","_AbstractChart2","_typography","ScatterPlotChartComponent","_AbstractChart","_inherits2","_super","_createSuper2","_classCallCheck2","apply","arguments","_createClass2","key","get","_this$props","props","data","groupKey","valueKey","Object","keys","filter","_this$asProps","asProps","xScale","_this$asProps$marginY","marginY","plotWidth","testItem","range","plotPadding","domain","minMax","Date","Number","isNaN","getMilliseconds","scaleTime","scaleLinear","_this$asProps2","yScale","_this$asProps2$margin","marginX","plotHeight","flatValues","max","Math","_toConsumableArray2","min","_this$asProps3","reduce","result","item","entries","forEach","_ref","_ref2","_slicedToArray2","value","add","Set","renderChart","_this$asProps4","dataDefinitions","state","map","checked","createElement","ScatterPlot","x","y","id","color","renderTooltip","_this","_this$asProps5","showTooltip","Tooltip","wMin","_ref3","index","children","Fragment","Dot","Text","tag","tooltipValueFormatter","AbstractChart","_defineProperty2","showLegend","ScatterPlotChart","createComponent","exports"],"sources":["../../../../src/component/Chart/ScatterPlotChart.tsx"],"sourcesContent":["import React from 'react';\nimport createComponent from '@semcore/core';\nimport { ScaleLinear, scaleLinear, scaleTime } from 'd3-scale';\n// @ts-ignore\nimport { minMax, ScatterPlot } from '../..';\nimport { AbstractChart } from './AbstractChart';\nimport {\n ScatterPlotChartData,\n ScatterPlotChartProps,\n ScatterPlotChartType,\n} from './ScatterPlotChart.type';\nimport { Text } from '@semcore/typography';\n\nclass ScatterPlotChartComponent extends AbstractChart<ScatterPlotChartData, ScatterPlotChartProps> {\n static displayName = 'Chart.ScatterPlot';\n static defaultProps: Partial<ScatterPlotChartProps> = {\n showLegend: false,\n };\n\n protected get dataKeys(): string[] {\n const { data, groupKey, valueKey } = this.props;\n\n return Object.keys(data[0]).filter((key) => key !== groupKey && key !== valueKey);\n }\n\n protected get xScale() {\n const { xScale, marginY = 30, plotWidth, data, groupKey } = this.asProps;\n\n if (xScale) {\n return xScale;\n }\n\n const testItem = data[0][groupKey];\n const range = [marginY, plotWidth - this.plotPadding];\n const domain = minMax(data, groupKey);\n\n if (testItem instanceof Date && !Number.isNaN(testItem.getMilliseconds())) {\n return scaleTime([domain[0] * 0.8, domain[1] * 1.2], range);\n }\n\n return scaleLinear([domain[0] * 0.8, domain[1] * 1.2], range);\n }\n\n protected get yScale(): ScaleLinear<any, any> {\n const { yScale, marginX = 30, plotHeight } = this.asProps;\n\n if (yScale) {\n return yScale;\n }\n\n const flatValues = this.flatValues;\n\n const max = Math.max(...flatValues);\n const min = Math.min(...flatValues);\n\n return scaleLinear()\n .range([plotHeight - marginX, this.plotPadding])\n .domain([min * 0.8, max * 1.1]);\n }\n\n protected get flatValues(): Set<number> {\n const { data, groupKey, valueKey } = this.asProps;\n\n const flatValues = data.reduce<Set<number>>((result, item) => {\n Object.entries(item).forEach(([key, value]) => {\n if (key !== groupKey && key !== valueKey && typeof value === 'number') {\n result.add(value);\n }\n });\n\n return result;\n }, new Set());\n\n return flatValues;\n }\n\n protected renderChart() {\n const { groupKey, valueKey } = this.asProps;\n const { dataDefinitions } = this.state;\n\n return dataDefinitions.map((item) => {\n return (\n item.checked && (\n <ScatterPlot x={groupKey} y={item.id} key={item.id} color={item.color} value={valueKey} />\n )\n );\n });\n }\n\n protected renderTooltip() {\n const { data, groupKey, showTooltip } = this.asProps;\n const { dataDefinitions } = this.state;\n\n if (!showTooltip) {\n return null;\n }\n\n return dataDefinitions\n .filter((item) => item.checked)\n .map((item) => {\n return (\n <ScatterPlot.Tooltip key={item.id} x={groupKey} y={item.id} wMin={100}>\n {({ index, x, y }: any) => {\n return {\n children: (\n <>\n <ScatterPlot.Tooltip.Dot color={item.color}>Data</ScatterPlot.Tooltip.Dot>\n <Text tag='div'>X axis {this.tooltipValueFormatter(data[index][x])}</Text>\n <Text tag='div'>Y axis {this.tooltipValueFormatter(data[index][y])}</Text>\n </>\n ),\n };\n }}\n </ScatterPlot.Tooltip>\n );\n });\n }\n}\n\nexport const ScatterPlotChart: ScatterPlotChartType = createComponent(ScatterPlotChartComponent);\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScatterPlotChart.type.js","names":[],"sources":["../../../../src/component/Chart/ScatterPlotChart.type.ts"],"sourcesContent":["import { Intergalactic } from '@semcore/core';\nimport { Flex } from '@semcore/flex-box';\nimport { interpolateValue } from '../../utils';\nimport { ScaleLinear, ScaleTime } from 'd3-scale';\nimport { BaseChartProps } from './AbstractChart.type';\n\nexport type ScatterPlotChartData = Array<Record<string, number | typeof interpolateValue | Date>>;\n\nexport type ScatterPlotChartProps = BaseChartProps<ScatterPlotChartData> & {\n groupKey: string;\n xScale?: ScaleLinear<any, any> | ScaleTime<any, any>;\n yScale?: ScaleLinear<any, any>;\n valueKey?: string;\n};\n\nexport type ScatterPlotChartType = Intergalactic.Component<typeof Flex, ScatterPlotChartProps>;\n"],"mappings":""}
|