@cloudtower/eagle 0.32.40 → 0.32.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/__test__/mockLineChart.d.ts +4 -0
  2. package/dist/cjs/core/ConfigProvider/index.js +5 -5
  3. package/dist/cjs/core/LineChart/LineChartActions.js +52 -0
  4. package/dist/cjs/core/LineChart/LineChartLegend.js +101 -0
  5. package/dist/cjs/core/LineChart/LineChartToolBar.js +56 -0
  6. package/dist/cjs/core/LineChart/Pointer.js +45 -0
  7. package/dist/cjs/core/LineChart/RenderChart.js +304 -0
  8. package/dist/cjs/core/LineChart/TooltipFormatter.js +70 -0
  9. package/dist/cjs/core/LineChart/index.js +66 -0
  10. package/dist/cjs/core/LineChart/styled.js +35 -0
  11. package/dist/cjs/core/LineChart/type.js +30 -0
  12. package/dist/cjs/core/LineChart/utils.js +394 -0
  13. package/dist/cjs/core/Loading/index.js +2 -2
  14. package/dist/cjs/core/Progress/progress.widgets.js +1 -1
  15. package/dist/cjs/core/Timeline/Timeline.widget.js +4 -4
  16. package/dist/cjs/core/Timeline/index.js +4 -4
  17. package/dist/cjs/core/index.js +9 -9
  18. package/dist/cjs/coreX/CheckPointList/index.js +3 -3
  19. package/dist/cjs/coreX/CircleLoading/index.js +4 -4
  20. package/dist/cjs/coreX/DateRangePicker/Calendar.js +1 -1
  21. package/dist/cjs/coreX/Dialogs/DeleteDialog/DeleteDialog.js +47 -0
  22. package/dist/cjs/coreX/Dialogs/RejectDialog/RejectDialog.js +87 -0
  23. package/dist/cjs/coreX/Dialogs/RejectDialog/RejectDialog.type.js +11 -0
  24. package/dist/cjs/coreX/Dialogs/SmallDialog.js +86 -0
  25. package/dist/cjs/index.js +168 -131
  26. package/dist/cjs/stats1.html +1 -1
  27. package/dist/cjs/utils/constants.js +1 -1
  28. package/dist/cjs/utils/tower.js +81 -0
  29. package/dist/components.css +2512 -2178
  30. package/dist/esm/core/ConfigProvider/index.js +3 -3
  31. package/dist/esm/core/LineChart/LineChartActions.js +46 -0
  32. package/dist/esm/core/LineChart/LineChartLegend.js +91 -0
  33. package/dist/esm/core/LineChart/LineChartToolBar.js +50 -0
  34. package/dist/esm/core/LineChart/Pointer.js +38 -0
  35. package/dist/esm/core/LineChart/RenderChart.js +296 -0
  36. package/dist/esm/core/LineChart/TooltipFormatter.js +63 -0
  37. package/dist/esm/core/LineChart/index.js +57 -0
  38. package/dist/esm/core/LineChart/styled.js +25 -0
  39. package/dist/esm/core/LineChart/type.js +26 -0
  40. package/dist/esm/core/LineChart/utils.js +369 -0
  41. package/dist/esm/core/Loading/index.js +1 -1
  42. package/dist/esm/core/Progress/progress.widgets.js +1 -1
  43. package/dist/esm/core/Timeline/Timeline.widget.js +3 -3
  44. package/dist/esm/core/Timeline/index.js +3 -3
  45. package/dist/esm/coreX/CheckPointList/index.js +3 -3
  46. package/dist/esm/coreX/CircleLoading/index.js +3 -3
  47. package/dist/esm/coreX/DateRangePicker/Calendar.js +1 -1
  48. package/dist/esm/coreX/Dialogs/DeleteDialog/DeleteDialog.js +41 -0
  49. package/dist/esm/coreX/Dialogs/RejectDialog/RejectDialog.js +81 -0
  50. package/dist/esm/coreX/Dialogs/RejectDialog/RejectDialog.type.js +9 -0
  51. package/dist/esm/coreX/Dialogs/SmallDialog.js +80 -0
  52. package/dist/esm/index.js +10 -2
  53. package/dist/esm/stats1.html +1 -1
  54. package/dist/esm/utils/constants.js +1 -1
  55. package/dist/esm/utils/tower.js +77 -1
  56. package/dist/src/antd.d.ts +1 -1
  57. package/dist/src/core/ConfigProvider/index.d.ts +2 -2
  58. package/dist/src/core/LineChart/LineChartActions.d.ts +7 -0
  59. package/dist/src/core/LineChart/LineChartLegend.d.ts +18 -0
  60. package/dist/src/core/LineChart/LineChartToolBar.d.ts +20 -0
  61. package/dist/src/core/LineChart/Pointer.d.ts +6 -0
  62. package/dist/src/core/LineChart/RenderChart.d.ts +45 -0
  63. package/dist/src/core/LineChart/TooltipFormatter.d.ts +10 -0
  64. package/dist/src/core/LineChart/__test__/h5_css.test.d.ts +1 -0
  65. package/dist/src/core/LineChart/index.d.ts +8 -0
  66. package/dist/src/core/LineChart/styled.d.ts +12 -0
  67. package/dist/src/core/LineChart/type.d.ts +191 -0
  68. package/dist/src/core/LineChart/utils.d.ts +56 -0
  69. package/dist/src/core/Metric/metric.d.ts +1 -1
  70. package/dist/src/core/Timeline/Timeline.type.d.ts +2 -2
  71. package/dist/src/core/index.d.ts +4 -1
  72. package/dist/src/coreX/CheckPointList/index.d.ts +1 -1
  73. package/dist/src/coreX/Dialogs/DeleteDialog/DeleteDialog.d.ts +3 -0
  74. package/dist/src/coreX/Dialogs/DeleteDialog/DeleteDialog.type.d.ts +19 -0
  75. package/dist/src/coreX/Dialogs/DeleteDialog/index.d.ts +2 -0
  76. package/dist/src/coreX/Dialogs/RejectDialog/RejectDialog.d.ts +3 -0
  77. package/dist/src/coreX/Dialogs/RejectDialog/RejectDialog.type.d.ts +59 -0
  78. package/dist/src/coreX/Dialogs/RejectDialog/index.d.ts +2 -0
  79. package/dist/src/coreX/Dialogs/SmallDialog.d.ts +31 -0
  80. package/dist/src/coreX/Dialogs/index.d.ts +3 -0
  81. package/dist/src/coreX/index.d.ts +2 -1
  82. package/dist/src/utils/tower.d.ts +12 -0
  83. package/dist/stories/docs/core/LineChart.stories.d.ts +16 -0
  84. package/dist/stories/docs/core/Timeline.stories.d.ts +2 -2
  85. package/dist/stories/docs/coreX/CheckPointList.stories.d.ts +1 -1
  86. package/dist/stories/docs/coreX/Dialogs/DeleteDialog.stories.d.ts +37 -0
  87. package/dist/stories/docs/coreX/Dialogs/RejectDialog.stories.d.ts +89 -0
  88. package/dist/stories/docs/coreX/Show.stories.d.ts +2 -2
  89. package/dist/style.css +2158 -1862
  90. package/dist/variables.scss +2 -0
  91. package/package.json +5 -6
@@ -1,13 +1,13 @@
1
1
  import useParrotTranslation from '../../hooks/useParrotTranslation.js';
2
2
  import { ConfigProvider as ConfigProvider$2 } from 'antd';
3
- import { ConfigProvider as ConfigProvider$1 } from 'antd5';
4
- import React__default, { useEffect } from 'react';
5
3
  import enUS from 'antd/lib/locale/en_US';
6
4
  import zhCN from 'antd/lib/locale/zh_CN';
5
+ import { ConfigProvider as ConfigProvider$1 } from 'antd5';
7
6
  import antd5enUS from 'antd5/lib/locale/en_US';
8
7
  import antd5zhCN from 'antd5/lib/locale/zh_CN';
9
- import moment from 'moment';
10
8
  import dayjs from 'dayjs';
9
+ import moment from 'moment';
10
+ import React__default, { useEffect } from 'react';
11
11
 
12
12
  var __defProp = Object.defineProperty;
13
13
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -0,0 +1,46 @@
1
+ import { MoreEllipsis316BoldSecondaryIcon } from '@cloudtower/icons-react';
2
+ import Button from '../Button/index.js';
3
+ import React__default from 'react';
4
+ import Icon from '../Icon/index.js';
5
+ import { Antd5Dropdown } from '../Antd5Dropdown/Antd5Dropdown.js';
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value
16
+ }) : obj[key] = value;
17
+ var __spreadValues = (a, b) => {
18
+ for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
19
+ if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
21
+ }
22
+ return a;
23
+ };
24
+ const actionStyle = "E_a9y3flr";
25
+ const actionStyleLabel = "E_a1njc627";
26
+ const LineChartActions = props => {
27
+ const {
28
+ label,
29
+ dropdownProps
30
+ } = props;
31
+ return /* @__PURE__ */React__default.createElement("div", {
32
+ className: "metric-extra"
33
+ }, /* @__PURE__ */React__default.createElement("div", {
34
+ className: actionStyleLabel
35
+ }, label), dropdownProps && /* @__PURE__ */React__default.createElement(Antd5Dropdown, __spreadValues({}, dropdownProps), /* @__PURE__ */React__default.createElement(Button, {
36
+ size: "small",
37
+ type: "tertiary",
38
+ className: actionStyle,
39
+ prefixIcon: /* @__PURE__ */React__default.createElement(Icon, {
40
+ src: MoreEllipsis316BoldSecondaryIcon
41
+ })
42
+ })));
43
+ };
44
+ var LineChartActions$1 = LineChartActions;
45
+
46
+ export { LineChartActions$1 as default };
@@ -0,0 +1,91 @@
1
+ import { ArrowChevronDown16SecondaryIcon, ArrowChevronDown16BlueIcon, ArrowChevronUp16BlueIcon } from '@cloudtower/icons-react';
2
+ import Icon from '../Icon/index.js';
3
+ import { LineChartColorBlockStyle, LegendStyle, ExtraResource, LegendItemsStyleDropdown, LegendItemsStyle } from './styled.js';
4
+ import { ExtraOverflow } from '../Overflow/index.js';
5
+ import Truncate from '../Truncate/index.js';
6
+ import { Menu } from 'antd';
7
+ import cs from 'classnames';
8
+ import React__default from 'react';
9
+ import { Antd5Dropdown } from '../Antd5Dropdown/Antd5Dropdown.js';
10
+
11
+ const LineChartColorBlock = ({ background, borderd = false }) => /* @__PURE__ */ React__default.createElement(
12
+ "div",
13
+ {
14
+ className: cs(
15
+ LineChartColorBlockStyle,
16
+ "color-block",
17
+ borderd && "borderd"
18
+ ),
19
+ style: { background }
20
+ }
21
+ );
22
+ const LineChartLegend = (props) => {
23
+ const { deselected, onClick, legends, onHover, hovering, hovereringSelf } = props;
24
+ const [isDropdownOpen, setIsDropdownOpen] = React__default.useState(false);
25
+ return /* @__PURE__ */ React__default.createElement(
26
+ ExtraOverflow,
27
+ {
28
+ className: LegendStyle,
29
+ extraEl: (end) => /* @__PURE__ */ React__default.createElement(
30
+ Antd5Dropdown,
31
+ {
32
+ overlayClassName: ExtraResource,
33
+ trigger: ["click"],
34
+ onVisibleChange: setIsDropdownOpen,
35
+ overlay: /* @__PURE__ */ React__default.createElement(Menu, null, legends.slice(end).map((legend, idx) => {
36
+ return /* @__PURE__ */ React__default.createElement(
37
+ Menu.Item,
38
+ {
39
+ className: cs(
40
+ LegendItemsStyleDropdown,
41
+ deselected.includes(legend.id) && "deselected",
42
+ hovering.includes(legend.id) && "hovering",
43
+ hovereringSelf.includes(legend.id) && "hoverering-self"
44
+ ),
45
+ key: legend.id,
46
+ onClick: () => onClick(legend.id),
47
+ onMouseEnter: () => onHover("enter", legend.id),
48
+ onMouseLeave: () => onHover("leave", legend.id)
49
+ },
50
+ /* @__PURE__ */ React__default.createElement(LineChartColorBlock, { background: legend.color }),
51
+ /* @__PURE__ */ React__default.createElement("span", null, legend.name)
52
+ );
53
+ }))
54
+ },
55
+ /* @__PURE__ */ React__default.createElement(
56
+ Icon,
57
+ {
58
+ alt: "arrowChevronDownSmall16Secondary",
59
+ className: "dropdown-trigger",
60
+ src: ArrowChevronDown16SecondaryIcon,
61
+ hoverSrc: ArrowChevronDown16BlueIcon,
62
+ activeSrc: ArrowChevronUp16BlueIcon,
63
+ active: isDropdownOpen
64
+ }
65
+ )
66
+ ),
67
+ els: legends.map((legend) => {
68
+ return /* @__PURE__ */ React__default.createElement(
69
+ "div",
70
+ {
71
+ className: cs(
72
+ LegendItemsStyle,
73
+ deselected.includes(legend.id) && "deselected",
74
+ hovering.includes(legend.id) && "hovering",
75
+ hovereringSelf.includes(legend.id) && "hoverering-self"
76
+ ),
77
+ key: legend.id,
78
+ onMouseEnter: () => onHover("enter", legend.id),
79
+ onMouseLeave: () => onHover("leave", legend.id),
80
+ onClick: () => onClick(legend.id)
81
+ },
82
+ /* @__PURE__ */ React__default.createElement(LineChartColorBlock, { background: legend.color }),
83
+ /* @__PURE__ */ React__default.createElement("span", null, /* @__PURE__ */ React__default.createElement(Truncate, { text: legend.name, len: 50, backLen: 20 }))
84
+ );
85
+ })
86
+ }
87
+ );
88
+ };
89
+ var LineChartLegend$1 = LineChartLegend;
90
+
91
+ export { LineChartColorBlock, LineChartLegend$1 as default };
@@ -0,0 +1,50 @@
1
+ import LineChartActions from './LineChartActions.js';
2
+ import LineChartLegend from './LineChartLegend.js';
3
+ import React__default from 'react';
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ const LineChartToolBar = ({
22
+ showLegend,
23
+ streams,
24
+ metricName,
25
+ deselected,
26
+ hovering,
27
+ onLegendClick,
28
+ onLegendHover,
29
+ legends,
30
+ actionsProps,
31
+ dropdownProps,
32
+ hoveringSelf
33
+ }) => {
34
+ return /* @__PURE__ */ React__default.createElement("div", { className: "metric-toolbar" }, showLegend && /* @__PURE__ */ React__default.createElement(
35
+ LineChartLegend,
36
+ {
37
+ streams,
38
+ metricName,
39
+ deselected,
40
+ hovering,
41
+ onClick: onLegendClick,
42
+ legends,
43
+ onHover: onLegendHover,
44
+ hovereringSelf: hoveringSelf
45
+ }
46
+ ), (actionsProps == null ? void 0 : actionsProps.show) && /* @__PURE__ */ React__default.createElement(LineChartActions, __spreadValues({ dropdownProps }, actionsProps)));
47
+ };
48
+ var LineChartToolBar$1 = LineChartToolBar;
49
+
50
+ export { LineChartToolBar$1 as default };
@@ -0,0 +1,38 @@
1
+ import { useKitSelector } from '../KitStoreProvider/index.js';
2
+ import _ from 'lodash';
3
+ import React__default from 'react';
4
+
5
+ const Pointer = ({ uuid = "", metricWidth }) => {
6
+ const pointers = useKitSelector(
7
+ (state) => _.get(state, "chart.pointers")
8
+ );
9
+ if (!(pointers == null ? void 0 : pointers[uuid])) {
10
+ return null;
11
+ }
12
+ const { left = 0, text } = pointers[uuid];
13
+ let dis = -99999999;
14
+ const threshold = 50;
15
+ if (metricWidth) {
16
+ if (left <= threshold) {
17
+ dis = threshold;
18
+ } else if (left >= metricWidth - threshold) {
19
+ dis = metricWidth - threshold;
20
+ } else {
21
+ dis = left;
22
+ }
23
+ }
24
+ return /* @__PURE__ */ React__default.createElement(
25
+ "div",
26
+ {
27
+ style: {
28
+ transform: `translate(${dis}px)`,
29
+ position: "absolute",
30
+ whiteSpace: "nowrap"
31
+ }
32
+ },
33
+ /* @__PURE__ */ React__default.createElement("div", { className: "pointer-wrapper" }, text)
34
+ );
35
+ };
36
+ var Pointer$1 = Pointer;
37
+
38
+ export { Pointer$1 as default };
@@ -0,0 +1,296 @@
1
+ import { useKitDispatch } from '../KitStoreProvider/index.js';
2
+ import LineChartLegend from './LineChartLegend.js';
3
+ import { MetricLegendTabStyle } from './styled.js';
4
+ import { ILineChartGraphType } from './type.js';
5
+ import { Empty } from 'antd';
6
+ import { convertLineChartDataStruct, getYAxisDomain, getLineChartXAxisDomain, lineChartXaxisCal, lineChartYaxisTickFormatter, lineChartTickFormatter } from './utils.js';
7
+ import TooltipFormatter from './TooltipFormatter.js';
8
+ import useParrotTranslation from '../../hooks/useParrotTranslation.js';
9
+ import cs from 'classnames';
10
+ import dayjs from 'dayjs';
11
+ import React__default, { useState, useMemo, useCallback } from 'react';
12
+ import { ResponsiveContainer, AreaChart, XAxis, YAxis, Tooltip, Area } from 'recharts';
13
+ import LineChartToolBar from './LineChartToolBar.js';
14
+ import { ChartActions } from '../../store/chart.js';
15
+
16
+ var __defProp = Object.defineProperty;
17
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
18
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
19
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
20
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
21
+ var __spreadValues = (a, b) => {
22
+ for (var prop in b || (b = {}))
23
+ if (__hasOwnProp.call(b, prop))
24
+ __defNormalProp(a, prop, b[prop]);
25
+ if (__getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(b)) {
27
+ if (__propIsEnum.call(b, prop))
28
+ __defNormalProp(a, prop, b[prop]);
29
+ }
30
+ return a;
31
+ };
32
+ const RenderChart = (props) => {
33
+ const {
34
+ metricName,
35
+ showLegend,
36
+ syncId,
37
+ showXAxis,
38
+ yAxisAlign,
39
+ height,
40
+ type,
41
+ mode = "legend",
42
+ dropdownProps,
43
+ onLabelsChange,
44
+ metric,
45
+ yAxisProps,
46
+ xAxisProps,
47
+ actionsProps,
48
+ tooltipProps,
49
+ width,
50
+ dateRange = [dayjs(), dayjs()],
51
+ emptyText,
52
+ emptyIcon
53
+ } = props;
54
+ const { t } = useParrotTranslation();
55
+ const dispatch = useKitDispatch();
56
+ const [deselected, setDeselected] = useState([]);
57
+ const [hovering, setHovering] = useState([]);
58
+ const [hoveringSelf, setHoveringSelf] = useState([]);
59
+ const [tempDeselected, setTempDeselected] = useState([]);
60
+ const streams = useMemo(() => metric.sample_streams, [metric]);
61
+ const legends = useMemo(() => {
62
+ return metric.sample_streams.map((stream) => stream.legend);
63
+ }, [metric.sample_streams]);
64
+ const areaChartData = useMemo(
65
+ () => convertLineChartDataStruct(streams.map((stream) => stream.points)),
66
+ [streams]
67
+ );
68
+ const yDomain = getYAxisDomain(areaChartData, type, metric.unit);
69
+ const xDomain = getLineChartXAxisDomain(dateRange, dateRange[1].valueOf());
70
+ const xTicks = lineChartXaxisCal(xDomain[1], dateRange, width);
71
+ const onLegendClick = useCallback(
72
+ (id) => {
73
+ setDeselected((prev) => {
74
+ var _a;
75
+ const currentDeselected = tempDeselected.length ? tempDeselected : prev;
76
+ if (currentDeselected.length === 0) {
77
+ return streams.map((stream) => stream.legend.id).filter((legendId) => legendId !== id);
78
+ }
79
+ if (currentDeselected.length === streams.length - 1) {
80
+ const highlightedId = (_a = streams.find(
81
+ (stream) => !currentDeselected.includes(stream.legend.id)
82
+ )) == null ? void 0 : _a.legend.id;
83
+ if (id === highlightedId) {
84
+ return [];
85
+ } else {
86
+ return currentDeselected.filter(
87
+ (deselectedId) => deselectedId !== id
88
+ );
89
+ }
90
+ }
91
+ const isHighlighted = !currentDeselected.includes(id);
92
+ if (isHighlighted) {
93
+ return [...currentDeselected, id];
94
+ } else {
95
+ return currentDeselected.filter(
96
+ (deselectedId) => deselectedId !== id
97
+ );
98
+ }
99
+ });
100
+ if (tempDeselected.length) {
101
+ setTempDeselected([]);
102
+ }
103
+ },
104
+ [streams, tempDeselected]
105
+ );
106
+ const onLegendHover = useCallback(
107
+ (method, id) => {
108
+ if (method === "enter") {
109
+ if (deselected.length) {
110
+ setTempDeselected(deselected);
111
+ if (deselected.includes(id)) {
112
+ setDeselected(
113
+ streams.map((stream) => stream.legend.id).filter(
114
+ (legendId) => legendId !== id && deselected.includes(legendId)
115
+ )
116
+ );
117
+ setHovering(
118
+ streams.map((stream) => stream.legend.id).filter((legendId) => legendId === id)
119
+ );
120
+ setHoveringSelf(
121
+ streams.map((stream) => stream.legend.id).filter((legendId) => legendId === id)
122
+ );
123
+ } else {
124
+ setDeselected([]);
125
+ setHovering(
126
+ streams.map((stream) => stream.legend.id).filter((legendId) => legendId !== id)
127
+ );
128
+ }
129
+ } else {
130
+ setHovering(
131
+ streams.map((stream) => stream.legend.id).filter((legendId) => legendId !== id)
132
+ );
133
+ }
134
+ } else {
135
+ if (tempDeselected.length) {
136
+ setDeselected(tempDeselected);
137
+ setTempDeselected([]);
138
+ }
139
+ setHovering([]);
140
+ setHoveringSelf([]);
141
+ }
142
+ },
143
+ [deselected, streams, tempDeselected]
144
+ );
145
+ const hidePointer = useCallback(() => {
146
+ dispatch({
147
+ type: ChartActions.SET_POINTER,
148
+ payload: { visible: false, uuid: syncId }
149
+ });
150
+ }, [dispatch, syncId]);
151
+ const handleMouseMove = useCallback(
152
+ (e) => {
153
+ var _a;
154
+ if (e.isTooltipActive) {
155
+ const { chartX, activePayload } = e;
156
+ if (!((_a = activePayload == null ? void 0 : activePayload[0]) == null ? void 0 : _a.payload)) {
157
+ return;
158
+ }
159
+ dispatch({
160
+ type: ChartActions.SET_POINTER,
161
+ payload: {
162
+ uuid: syncId,
163
+ visible: true,
164
+ left: chartX,
165
+ text: dayjs(Number(activePayload[0].payload.t)).format(
166
+ "MM/DD HH:mm:ss"
167
+ ),
168
+ value: activePayload[0].payload.v
169
+ }
170
+ });
171
+ }
172
+ },
173
+ [dispatch, syncId]
174
+ );
175
+ if (!(streams == null ? void 0 : streams.length) || streams.every((stream) => {
176
+ var _a;
177
+ return !((_a = stream.points) == null ? void 0 : _a.length);
178
+ })) {
179
+ return /* @__PURE__ */ React__default.createElement("div", { className: MetricLegendTabStyle }, /* @__PURE__ */ React__default.createElement("div", { className: "name-toolbar" }, /* @__PURE__ */ React__default.createElement(
180
+ LineChartLegend,
181
+ {
182
+ streams,
183
+ metricName,
184
+ deselected,
185
+ hovering,
186
+ hovereringSelf: hoveringSelf,
187
+ onClick: onLegendClick,
188
+ onHover: onLegendHover,
189
+ legends
190
+ }
191
+ )), /* @__PURE__ */ React__default.createElement("div", { className: cs("content", mode === "single" && "single-content") }, /* @__PURE__ */ React__default.createElement(
192
+ Empty,
193
+ {
194
+ description: emptyText || t("metric.empty"),
195
+ image: emptyIcon ? emptyIcon : null,
196
+ imageStyle: emptyIcon ? {} : { display: "none" }
197
+ }
198
+ )));
199
+ }
200
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
201
+ LineChartToolBar,
202
+ {
203
+ showLegend,
204
+ streams,
205
+ metricName,
206
+ deselected,
207
+ hovering,
208
+ hoveringSelf,
209
+ onLegendClick,
210
+ legends,
211
+ actionsProps,
212
+ dropdownProps,
213
+ onLegendHover
214
+ }
215
+ ), /* @__PURE__ */ React__default.createElement(ResponsiveContainer, { height }, /* @__PURE__ */ React__default.createElement(
216
+ AreaChart,
217
+ {
218
+ style: { backgroundColor: "white" },
219
+ margin: showLegend ? { top: 10, left: -20, right: 10, bottom: 0 } : { top: 20, left: -20, right: 10, bottom: 5 },
220
+ data: areaChartData,
221
+ syncId,
222
+ onMouseLeave: hidePointer,
223
+ onMouseMove: handleMouseMove
224
+ },
225
+ /* @__PURE__ */ React__default.createElement(
226
+ XAxis,
227
+ __spreadValues({
228
+ hide: !showXAxis,
229
+ dataKey: "t",
230
+ axisLine: false,
231
+ tickLine: false,
232
+ type: "number",
233
+ ticks: xTicks,
234
+ domain: xDomain,
235
+ tickFormatter: (tick) => lineChartTickFormatter(tick, dateRange)
236
+ }, xAxisProps)
237
+ ),
238
+ /* @__PURE__ */ React__default.createElement(
239
+ YAxis,
240
+ __spreadValues({
241
+ width: 200,
242
+ mirror: true,
243
+ axisLine: false,
244
+ tickLine: false,
245
+ allowDecimals: false,
246
+ domain: yDomain,
247
+ orientation: yAxisAlign,
248
+ tick: {
249
+ dx: 20,
250
+ dy: 16
251
+ },
252
+ ticks: [yDomain[1] / 2, yDomain[1]],
253
+ tickFormatter: (tick) => lineChartYaxisTickFormatter(tick, metric.unit)
254
+ }, yAxisProps)
255
+ ),
256
+ /* @__PURE__ */ React__default.createElement(
257
+ Tooltip,
258
+ __spreadValues({
259
+ content: tooltipProps.format && /* @__PURE__ */ React__default.createElement(
260
+ TooltipFormatter,
261
+ {
262
+ deselected,
263
+ legends,
264
+ format: tooltipProps.format
265
+ }
266
+ )
267
+ }, tooltipProps)
268
+ ),
269
+ streams.map((item, index) => {
270
+ if (deselected.includes(item.legend.id)) {
271
+ return null;
272
+ }
273
+ return /* @__PURE__ */ React__default.createElement(
274
+ Area,
275
+ {
276
+ key: index,
277
+ dataKey: `v${index}`,
278
+ stackId: type === ILineChartGraphType.Stack ? "stack" : void 0,
279
+ stroke: item.legend.stroke ? `${item.legend.color}1A` : item.legend.color,
280
+ fill: item.legend.fill,
281
+ isAnimationActive: false,
282
+ activeDot: {
283
+ stroke: item.legend.color,
284
+ r: 4,
285
+ strokeWidth: 2,
286
+ fill: "white"
287
+ },
288
+ opacity: hovering.includes(item.legend.id) ? 0.3 : 1
289
+ }
290
+ );
291
+ })
292
+ )));
293
+ };
294
+ var RenderChart$1 = RenderChart;
295
+
296
+ export { RenderChart$1 as default };
@@ -0,0 +1,63 @@
1
+ import { styled } from '@linaria/react';
2
+ import { LineChartColorBlock } from './LineChartLegend.js';
3
+ import { TooltipWrapper, TooltipColumn } from './styled.js';
4
+ import React__default from 'react';
5
+ import { Typo } from '../Typo/index.js';
6
+ import dayjs from 'dayjs';
7
+
8
+ var __defProp = Object.defineProperty;
9
+ var __defProps = Object.defineProperties;
10
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
11
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
13
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
14
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true,
18
+ value
19
+ }) : obj[key] = value;
20
+ var __spreadValues = (a, b) => {
21
+ for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
22
+ if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) {
23
+ if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
24
+ }
25
+ return a;
26
+ };
27
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
28
+ const TooltipTitle = /*#__PURE__*/styled('div')({
29
+ name: "TooltipTitle",
30
+ class: "E_t1616y1o",
31
+ propsAsIs: false
32
+ });
33
+ const TooltipFormatter = props => {
34
+ const {
35
+ active,
36
+ payload,
37
+ deselected,
38
+ legends,
39
+ format
40
+ } = props;
41
+ if (!active || !(payload == null ? void 0 : payload.length)) {
42
+ return null;
43
+ }
44
+ return /* @__PURE__ */React__default.createElement(TooltipWrapper, null, /* @__PURE__ */React__default.createElement(TooltipTitle, {
45
+ className: Typo.Label.l4_bold_title
46
+ }, dayjs(Number(payload[0].payload.t)).format("MM/DD HH:mm:ss")), payload.map((item, index) => {
47
+ return __spreadProps(__spreadValues({}, item), {
48
+ legend: legends[index]
49
+ });
50
+ }).sort((a, b) => b.value - a.value).map(item => {
51
+ return deselected.includes(item.legend.id) ? null : /* @__PURE__ */React__default.createElement(TooltipColumn, {
52
+ key: item.legend.id
53
+ }, /* @__PURE__ */React__default.createElement("div", null, /* @__PURE__ */React__default.createElement(LineChartColorBlock, {
54
+ background: item.legend.color,
55
+ borderd: true
56
+ }), item.legend.name), /* @__PURE__ */React__default.createElement("div", {
57
+ className: "column-value"
58
+ }, format(item)));
59
+ }));
60
+ };
61
+ var TooltipFormatter$1 = TooltipFormatter;
62
+
63
+ export { TooltipFormatter$1 as default };
@@ -0,0 +1,57 @@
1
+ import { parrotI18n } from '@cloudtower/parrot';
2
+ import ErrorBoundary from '../ErrorBoundary/index.js';
3
+ import Pointer from './Pointer.js';
4
+ import RenderChart from './RenderChart.js';
5
+ import { LineChartWrapper } from './styled.js';
6
+ import cs from 'classnames';
7
+ import React__default, { useState, useRef, useEffect } from 'react';
8
+
9
+ var __defProp = Object.defineProperty;
10
+ var __defProps = Object.defineProperties;
11
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
12
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
15
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
16
+ var __spreadValues = (a, b) => {
17
+ for (var prop in b || (b = {}))
18
+ if (__hasOwnProp.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ if (__getOwnPropSymbols)
21
+ for (var prop of __getOwnPropSymbols(b)) {
22
+ if (__propIsEnum.call(b, prop))
23
+ __defNormalProp(a, prop, b[prop]);
24
+ }
25
+ return a;
26
+ };
27
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
28
+ const LineChart = React__default.forwardRef(
29
+ (props, ref) => {
30
+ const {
31
+ height = 154,
32
+ showPointer = true,
33
+ showLegend = true,
34
+ showXaxis = false,
35
+ chartProps
36
+ } = props;
37
+ const [width, setWidth] = useState(0);
38
+ const wrapperRef = useRef(null);
39
+ useEffect(() => {
40
+ var _a;
41
+ setWidth(((_a = wrapperRef.current) == null ? void 0 : _a.offsetWidth) || 0);
42
+ }, []);
43
+ return /* @__PURE__ */ React__default.createElement(ErrorBoundary, { i18n: parrotI18n }, /* @__PURE__ */ React__default.createElement(
44
+ LineChartWrapper,
45
+ {
46
+ className: cs("metric-wrapper", !showXaxis && "hidden-xaxis"),
47
+ ref: wrapperRef,
48
+ style: { height: showLegend ? height + 30 : height }
49
+ },
50
+ /* @__PURE__ */ React__default.createElement(RenderChart, __spreadProps(__spreadValues({}, chartProps), { width })),
51
+ showPointer && /* @__PURE__ */ React__default.createElement(Pointer, { uuid: chartProps.syncId, metricWidth: width })
52
+ ));
53
+ }
54
+ );
55
+ var LineChart$1 = LineChart;
56
+
57
+ export { LineChart$1 as default };
@@ -0,0 +1,25 @@
1
+ import { styled } from '@linaria/react';
2
+
3
+ const MetricLegendTabStyle = "E_mn7joto";
4
+ const LegendStyle = "E_l1bifhon";
5
+ const LegendItemsStyle = "E_ltthzck";
6
+ const LegendItemsStyleDropdown = "E_l1mumj7o";
7
+ const ExtraResource = "E_e45tc5l";
8
+ const LineChartWrapper = /*#__PURE__*/styled('div')({
9
+ name: "LineChartWrapper",
10
+ class: "E_lqeaosa",
11
+ propsAsIs: false
12
+ });
13
+ const TooltipWrapper = /*#__PURE__*/styled('div')({
14
+ name: "TooltipWrapper",
15
+ class: "E_t2pr38p",
16
+ propsAsIs: false
17
+ });
18
+ const TooltipColumn = /*#__PURE__*/styled('div')({
19
+ name: "TooltipColumn",
20
+ class: "E_tecdsj7",
21
+ propsAsIs: false
22
+ });
23
+ const LineChartColorBlockStyle = "E_ljhvvia";
24
+
25
+ export { ExtraResource, LegendItemsStyle, LegendItemsStyleDropdown, LegendStyle, LineChartColorBlockStyle, LineChartWrapper, MetricLegendTabStyle, TooltipColumn, TooltipWrapper };