Skip to content

Commit 9c64b30

Browse files
committed
[#12240] Change heatmap code structure
1 parent 013a577 commit 9c64b30

File tree

12 files changed

+221
-323
lines changed

12 files changed

+221
-323
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import React from 'react';
2+
import { ErrorBoundary, ChartSkeleton } from '@pinpoint-fe/ui';
3+
import { HeatmapFetcher, HeatmapFetcherProps } from './HeatmapFetcher';
4+
5+
export interface HeatmapProps extends HeatmapFetcherProps {
6+
realtime?: boolean;
7+
}
8+
9+
export const Heatmap = ({ realtime = false, ...props }: HeatmapProps) => {
10+
return (
11+
<ErrorBoundary>
12+
<React.Suspense fallback={<ChartSkeleton />}>
13+
{realtime ? <div>Realtime...</div> : <HeatmapFetcher {...props} />}
14+
</React.Suspense>
15+
</ErrorBoundary>
16+
);
17+
};

web-frontend/src/main/v3/packages/ui/src/components/Heatmap/HeatmapChart.tsx

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 38 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import React from 'react';
2-
import HeatmapChartCore from './HeatmapChartCore';
3-
import ReactEChartsCore from 'echarts-for-react/lib/core';
4-
import html2canvas from 'html2canvas';
2+
import HeatmapChartCore, { HeatmapChartCoreProps } from './core/HeatmapChartCore';
53
import {
64
useServerMapSearchParameters,
75
useStoragedAxisY,
@@ -11,89 +9,54 @@ import {
119
APP_SETTING_KEYS,
1210
ApplicationType,
1311
GetHeatmapAppData,
12+
GetServerMap,
1413
} from '@pinpoint-fe/ui/src/constants';
1514

1615
export interface HeatmapFetcherHandle {
1716
handleCaptureImage: () => Promise<void>;
1817
}
1918

2019
export type HeatmapFetcherProps = {
21-
application?: ApplicationType;
20+
nodeData: GetServerMap.NodeData | ApplicationType;
2221
agentId?: string;
23-
};
24-
25-
export const HeatmapFetcher = React.forwardRef(
26-
({ application, agentId }: HeatmapFetcherProps, ref) => {
27-
React.useImperativeHandle(ref, () => ({
28-
handleCaptureImage,
29-
}));
30-
31-
const { dateRange, searchParameters } = useServerMapSearchParameters();
32-
const chartRef = React.useRef<ReactEChartsCore>(null);
33-
const [y] = useStoragedAxisY(APP_SETTING_KEYS.HEATMAP_Y_AXIS_MIN_MAX, [0, 10000]);
34-
const [parameters, setParameters] = React.useState<GetHeatmapAppData.Parameters>({
35-
applicationName: application?.applicationName,
22+
} & Pick<HeatmapChartCoreProps, 'toolbarOption'>;
23+
24+
export const HeatmapFetcher = ({ nodeData, agentId, ...props }: HeatmapFetcherProps) => {
25+
const { dateRange } = useServerMapSearchParameters();
26+
27+
const [y] = useStoragedAxisY(APP_SETTING_KEYS.HEATMAP_Y_AXIS_MIN_MAX, [0, 10000]);
28+
29+
const [parameters, setParameters] = React.useState<GetHeatmapAppData.Parameters>({
30+
applicationName: nodeData?.applicationName,
31+
from: dateRange.from.getTime(),
32+
to: dateRange.to.getTime(),
33+
minElapsedTime: Number(y[0]),
34+
maxElapsedTime: Number(y[1]),
35+
agentId: agentId,
36+
});
37+
const { data, isLoading } = useGetHeatmapAppData(parameters);
38+
39+
React.useEffect(() => {
40+
setParameters({
41+
applicationName: nodeData?.applicationName,
3642
from: dateRange.from.getTime(),
3743
to: dateRange.to.getTime(),
3844
minElapsedTime: Number(y[0]),
3945
maxElapsedTime: Number(y[1]),
4046
agentId: agentId,
4147
});
42-
const { data, isLoading } = useGetHeatmapAppData(parameters);
43-
44-
// console.log('search', searchParameters, 'parameters', parameters);
45-
// console.log('data', data);
46-
47-
React.useEffect(() => {
48-
setParameters({
49-
applicationName: application?.applicationName,
50-
from: dateRange.from.getTime(),
51-
to: dateRange.to.getTime(),
52-
minElapsedTime: Number(y[0]),
53-
maxElapsedTime: Number(y[1]),
54-
agentId: agentId,
55-
});
56-
}, [
57-
dateRange.from.getTime(),
58-
dateRange.to.getTime(),
59-
y[0],
60-
y[1],
61-
application?.applicationName,
62-
agentId,
63-
]);
64-
65-
async function handleCaptureImage() {
66-
if (!chartRef.current) {
67-
return;
68-
}
69-
70-
const currentNode = '';
71-
const fileName = `Pinpoint_Heatmap_Chart__${(agentId ? agentId : currentNode) || ''}`;
72-
73-
const chartElement = chartRef.current.getEchartsInstance().getDom();
74-
const canvas = await html2canvas(chartElement);
75-
const image = canvas.toDataURL('image/png');
76-
77-
const link = document.createElement('a');
78-
link.href = image;
79-
link.download = fileName;
80-
document.body.appendChild(link);
81-
link.click();
82-
document.body.removeChild(link);
83-
}
84-
85-
return (
86-
<div className="relative w-full h-full">
87-
<HeatmapChartCore
88-
ref={chartRef}
89-
isLoading={isLoading}
90-
data={data}
91-
setting={{
92-
yMin: y[0],
93-
yMax: y[1],
94-
}}
95-
/>
96-
</div>
97-
);
98-
},
99-
);
48+
}, [
49+
dateRange.from.getTime(),
50+
dateRange.to.getTime(),
51+
y[0],
52+
y[1],
53+
nodeData?.applicationName,
54+
agentId,
55+
]);
56+
57+
return (
58+
<div className="relative w-full h-full">
59+
<HeatmapChartCore isLoading={isLoading} data={data} {...props} />
60+
</div>
61+
);
62+
};

web-frontend/src/main/v3/packages/ui/src/components/Heatmap/ScatterOrHeatmap.tsx

Lines changed: 0 additions & 162 deletions
This file was deleted.

0 commit comments

Comments
 (0)