Skip to content

Commit 3457c72

Browse files
committed
[pinpoint-apm#12240] Heatmap > HeatmapSetting.visualMapSuccessMax/visualMapFailMax
1 parent 53fb4d5 commit 3457c72

File tree

9 files changed

+108
-48
lines changed

9 files changed

+108
-48
lines changed

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from 'react';
22
import HeatmapChartCore, { HeatmapChartCoreProps } from './core/HeatmapChartCore';
33
import {
44
useServerMapSearchParameters,
5-
useStoragedAxisY,
5+
useStoragedSetting,
66
useGetHeatmapAppData,
77
} from '@pinpoint-fe/ui/src/hooks';
88
import { APP_SETTING_KEYS, GetHeatmapAppData } from '@pinpoint-fe/ui/src/constants';
@@ -15,14 +15,14 @@ export type HeatmapFetcherProps = {
1515

1616
export const HeatmapFetcher = ({ nodeData, agentId, ...props }: HeatmapFetcherProps) => {
1717
const { dateRange } = useServerMapSearchParameters();
18-
const [y] = useStoragedAxisY(APP_SETTING_KEYS.HEATMAP_Y_AXIS_MIN_MAX, DefaultAxisY);
18+
const [setting] = useStoragedSetting(APP_SETTING_KEYS.HEATMAP_SETTING);
1919

2020
const [parameters, setParameters] = React.useState<GetHeatmapAppData.Parameters>({
2121
applicationName: nodeData?.applicationName,
2222
from: dateRange.from.getTime(),
2323
to: dateRange.to.getTime(),
24-
minElapsedTime: Number(y?.[0]) || DefaultAxisY[0],
25-
maxElapsedTime: Number(y?.[1]) || DefaultAxisY[1],
24+
minElapsedTime: Number(setting?.yMin) || DefaultAxisY[0],
25+
maxElapsedTime: Number(setting?.yMax) || DefaultAxisY[1],
2626
agentId: agentId,
2727
});
2828
const { data, isLoading } = useGetHeatmapAppData(parameters);
@@ -32,15 +32,15 @@ export const HeatmapFetcher = ({ nodeData, agentId, ...props }: HeatmapFetcherPr
3232
applicationName: nodeData?.applicationName,
3333
from: dateRange.from.getTime(),
3434
to: dateRange.to.getTime(),
35-
minElapsedTime: Number(y?.[0]) || DefaultAxisY[0],
36-
maxElapsedTime: Number(y?.[1]) || DefaultAxisY[1],
35+
minElapsedTime: Number(setting?.yMin) || DefaultAxisY[0],
36+
maxElapsedTime: Number(setting?.yMax) || DefaultAxisY[1],
3737
agentId: agentId,
3838
});
3939
}, [
4040
dateRange.from.getTime(),
4141
dateRange.to.getTime(),
42-
y?.[0],
43-
y?.[1],
42+
setting?.yMin,
43+
setting?.yMax,
4444
nodeData?.applicationName,
4545
agentId,
4646
]);

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from 'react';
22
import HeatmapChartCore, { HeatmapChartCoreProps } from './core/HeatmapChartCore';
33
import {
44
useServerMapSearchParameters,
5-
useStoragedAxisY,
5+
useStoragedSetting,
66
useGetHeatmapAppData,
77
} from '@pinpoint-fe/ui/src/hooks';
88
import {
@@ -69,14 +69,14 @@ export const HeatmapRealtimeFetcher = ({
6969
});
7070
}, [nodeData?.applicationName]);
7171

72-
const [y] = useStoragedAxisY(APP_SETTING_KEYS.HEATMAP_Y_AXIS_MIN_MAX, DefaultAxisY);
72+
const [setting] = useStoragedSetting(APP_SETTING_KEYS.HEATMAP_SETTING);
7373

7474
const [parameters, setParameters] = React.useState<GetHeatmapAppData.Parameters>({
7575
applicationName: nodeData?.applicationName,
7676
from: realtimeDateRange.from.getTime(),
7777
to: realtimeDateRange.to.getTime(),
78-
minElapsedTime: Number(y?.[0]) || DefaultAxisY[0],
79-
maxElapsedTime: Number(y?.[1]) || DefaultAxisY[1],
78+
minElapsedTime: Number(setting?.yMin) || DefaultAxisY[0],
79+
maxElapsedTime: Number(setting?.yMax) || DefaultAxisY[1],
8080
agentId: agentId,
8181
});
8282
const { data, isLoading } = useGetHeatmapAppData(parameters);
@@ -86,15 +86,15 @@ export const HeatmapRealtimeFetcher = ({
8686
applicationName: nodeData?.applicationName,
8787
from: realtimeDateRange.from.getTime(),
8888
to: realtimeDateRange.to.getTime(),
89-
minElapsedTime: Number(y?.[0]) || DefaultAxisY[0],
90-
maxElapsedTime: Number(y?.[1]) || DefaultAxisY[1],
89+
minElapsedTime: Number(setting?.yMin) || DefaultAxisY[0],
90+
maxElapsedTime: Number(setting?.yMax) || DefaultAxisY[1],
9191
agentId: agentId,
9292
});
9393
}, [
9494
realtimeDateRange.from.getTime(),
9595
realtimeDateRange.to.getTime(),
96-
y?.[0],
97-
y?.[1],
96+
setting?.yMin,
97+
setting?.yMax,
9898
nodeData?.applicationName,
9999
agentId,
100100
]);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ const HeatmapChart = React.forwardRef(
208208
{
209209
id: 'success',
210210
min: 0,
211-
max: isRealtime ? 5000 : successMaxCount,
211+
max: isRealtime ? setting?.visualMapSuccessMax : successMaxCount,
212212
calculable: true,
213213
seriesIndex: 0,
214214
orient: 'horizontal',
@@ -231,7 +231,7 @@ const HeatmapChart = React.forwardRef(
231231
{
232232
id: 'fail',
233233
min: 0,
234-
max: isRealtime ? 100 : failMaxCount,
234+
max: isRealtime ? setting?.visualMapFailMax : failMaxCount,
235235
calculable: true,
236236
seriesIndex: 1,
237237
orient: 'horizontal',

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

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ import {
2020
getTransactionListPath,
2121
getTranscationListQueryString,
2222
useServerMapSearchParameters,
23-
useStoragedAxisY,
23+
useStoragedSetting,
2424
} from '@pinpoint-fe/ui';
2525
import { FaDownload, FaExpandArrowsAlt } from 'react-icons/fa';
2626
import { BsGearFill } from 'react-icons/bs';
2727
import { CgSpinner } from 'react-icons/cg';
28-
import { HeatmapSetting } from './HeatmapSetting';
28+
import { HeatmapSetting, HeatmapSettingType } from './HeatmapSetting';
2929
import { HeatmapSkeleton } from '../HeatmapSkeleton';
3030

3131
const colorSteps = 10;
@@ -66,7 +66,7 @@ const HeatmapChartCore = ({
6666
const [showSetting, setShowSetting] = React.useState(false);
6767
const [isCapturingImage, setIsCapturingImage] = React.useState(false);
6868

69-
const [y, setY] = useStoragedAxisY(APP_SETTING_KEYS.HEATMAP_Y_AXIS_MIN_MAX, [0, 10000]);
69+
const [setting, setSetting] = useStoragedSetting(APP_SETTING_KEYS.HEATMAP_SETTING);
7070

7171
const handleExpand = () => {
7272
if (isRealtime) {
@@ -88,7 +88,6 @@ const HeatmapChartCore = ({
8888
};
8989

9090
const handleCaptureImage = async () => {
91-
console.log('??', chartContainerRef?.current);
9291
if (!chartContainerRef.current) {
9392
return;
9493
}
@@ -110,8 +109,8 @@ const HeatmapChartCore = ({
110109
await setIsCapturingImage(false);
111110
};
112111

113-
const handleSettingApply = (newSetting: { yMin: number; yMax: number }) => {
114-
setY([newSetting.yMin, newSetting.yMax]);
112+
const handleSettingApply = (newSetting: HeatmapSettingType) => {
113+
setSetting(newSetting);
115114
};
116115

117116
const onDragEnd = (data: any, checkedLegends: any) => {
@@ -151,10 +150,7 @@ const HeatmapChartCore = ({
151150
ref={chartContainerRef}
152151
data={data}
153152
isRealtime={isRealtime}
154-
setting={{
155-
yMin: y[0],
156-
yMax: y[1],
157-
}}
153+
setting={setting}
158154
onDragEnd={onDragEnd}
159155
/>
160156
{(showSetting || isCapturingImage) && (
@@ -163,10 +159,8 @@ const HeatmapChartCore = ({
163159
{showSetting && (
164160
<HeatmapSetting
165161
className="z-10"
166-
defaultValues={{
167-
yMin: y?.[0],
168-
yMax: y?.[1],
169-
}}
162+
isRealtime={isRealtime}
163+
defaultValues={setting}
170164
onClose={() => setShowSetting(false)}
171165
onApply={(newSetting) => {
172166
handleSettingApply(newSetting);

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

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,31 @@ import { zodResolver } from '@hookform/resolvers/zod';
1616
import { z } from 'zod';
1717

1818
export interface HeatmapSettingProps {
19+
isRealtime?: boolean;
1920
className?: string;
2021
onApply?: (value: HeatmapSettingType) => void;
2122
onClose?: () => void;
2223
defaultValues?: HeatmapSettingType;
2324
}
2425

25-
export const DefaultValue = { yMin: 0, yMax: 10000 };
26+
export const DefaultValue = {
27+
yMin: 0,
28+
yMax: 10000,
29+
visualMapSuccessMax: 5000,
30+
visualMapFailMax: 100,
31+
};
2632

2733
const FormSchema = z.object({
2834
yMin: z.coerce.number().min(0),
2935
yMax: z.coerce.number().min(1),
36+
visualMapSuccessMax: z.coerce.number().min(1).optional(),
37+
visualMapFailMax: z.coerce.number().min(1).optional(),
3038
});
3139

3240
export type HeatmapSettingType = z.infer<typeof FormSchema>;
3341

3442
export const HeatmapSetting = ({
43+
isRealtime,
3544
className,
3645
onApply,
3746
onClose,
@@ -50,6 +59,8 @@ export const HeatmapSetting = ({
5059
defaultValues: {
5160
yMin: defaultValues?.yMin,
5261
yMax: defaultValues?.yMax,
62+
visualMapSuccessMax: defaultValues?.visualMapSuccessMax || DefaultValue.visualMapSuccessMax,
63+
visualMapFailMax: defaultValues?.visualMapFailMax || DefaultValue.visualMapFailMax,
5364
},
5465
});
5566

@@ -113,6 +124,52 @@ export const HeatmapSetting = ({
113124
</FormItem>
114125
)}
115126
/>
127+
{isRealtime && (
128+
<>
129+
<FormField
130+
control={form.control}
131+
name="visualMapSuccessMax"
132+
render={({ field }) => (
133+
<FormItem>
134+
<FormLabel className="text-xs text-muted-foreground">
135+
VisualMap success max
136+
</FormLabel>
137+
<FormControl>
138+
<Input
139+
type="number"
140+
className="w-24 h-7"
141+
onKeyDown={handleKeyDown}
142+
min={1}
143+
{...field}
144+
/>
145+
</FormControl>
146+
<FormMessage />
147+
</FormItem>
148+
)}
149+
/>
150+
<FormField
151+
control={form.control}
152+
name="visualMapFailMax"
153+
render={({ field }) => (
154+
<FormItem>
155+
<FormLabel className="text-xs text-muted-foreground">
156+
VisualMap fail max
157+
</FormLabel>
158+
<FormControl>
159+
<Input
160+
type="number"
161+
className="w-24 h-7"
162+
onKeyDown={handleKeyDown}
163+
min={1}
164+
{...field}
165+
/>
166+
</FormControl>
167+
<FormMessage />
168+
</FormItem>
169+
)}
170+
/>
171+
</>
172+
)}
116173
<div className="flex justify-end gap-1 mt-6">
117174
<Button className="text-xs h-7" variant="outline" onClick={handleClickClose}>
118175
Cancel

web-frontend/src/main/v3/packages/ui/src/constants/appSettingKeys.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export enum APP_SETTING_KEYS {
1919
TRANSACTION_LIST_RESIZABLE = 'transactionListResizable',
2020
TRANSACTION_DETAIL_RESIZABLE = 'transactionDetailResizable',
2121
SCATTER_Y_AXIS_MIN_MAX = 'scatterYAxisMinMax',
22-
HEATMAP_Y_AXIS_MIN_MAX = 'heatmapYAxisMinMax',
22+
HEATMAP_SETTING = 'heatmapSetting',
2323
SERVER_MAP_HORIZONTAL_RESIZABLE = 'serverMapHorizontalResizable',
2424
REALTIME_ACTIVE_REQUEST_RESIZABLE = 'realtimeActiveRequestResizable',
2525
CONFIG_LAST_SELECTED_APPLICATION = 'configLastSelectedApplication',

web-frontend/src/main/v3/packages/ui/src/hooks/utility/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ export * from './useHeightToBottom';
66
export * from './useLanguage';
77
export * from './useLocalStorage';
88
export * from './useServerMapLinkedData';
9-
export * from './useStoragedAxisY';
9+
export * from './useStoragedSetting';
1010
export * from './useTabFocus';
1111
// export * from './useSearchParameters';

web-frontend/src/main/v3/packages/ui/src/hooks/utility/useStoragedAxisY.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import React from 'react';
2+
import { useLocalStorage } from '@pinpoint-fe/ui/src/hooks';
3+
import { DefaultValue } from '@pinpoint-fe/ui/src/components/Heatmap/core/HeatmapSetting';
4+
5+
export type HeatmapSettingType = {
6+
yMin: number;
7+
yMax: number;
8+
visualMapSuccessMax?: number;
9+
visualMapFailMax?: number;
10+
};
11+
12+
export const useStoragedSetting = (
13+
storageKey: string,
14+
initialValue = DefaultValue,
15+
): [HeatmapSettingType, React.Dispatch<React.SetStateAction<HeatmapSettingType>>] => {
16+
const storagedAxisY = useLocalStorage<HeatmapSettingType>(
17+
storageKey,
18+
initialValue as HeatmapSettingType,
19+
);
20+
21+
return storagedAxisY;
22+
};

0 commit comments

Comments
 (0)