File tree 3 files changed +54
-2
lines changed
3 files changed +54
-2
lines changed Original file line number Diff line number Diff line change @@ -35,8 +35,11 @@ import Users from '@/pages/config/Users';
35
35
import Alarm from '@/pages/config/Alarm' ;
36
36
import Webhook from '@/pages/config/Webhook' ;
37
37
import { threadDumpRouteLoader } from './loader/threadDump' ;
38
+ import { handleV2RouteLoader } from './loader/handleV2' ;
38
39
39
- const defaultLoader = ( ) => redirect ( '/serverMap' ) ;
40
+ const defaultLoader = ( ) => {
41
+ return redirect ( '/serverMap' ) ;
42
+ } ;
40
43
41
44
const router = createBrowserRouter (
42
45
[
@@ -46,7 +49,16 @@ const router = createBrowserRouter(
46
49
} ,
47
50
{
48
51
path : '/main' ,
49
- loader : defaultLoader ,
52
+ children : [
53
+ {
54
+ path : '' ,
55
+ loader : defaultLoader ,
56
+ } ,
57
+ {
58
+ path : ':application/:period/:endTime' ,
59
+ loader : handleV2RouteLoader ,
60
+ } ,
61
+ ] ,
50
62
} ,
51
63
{
52
64
path : `${ APP_PATH . API_CHECK } ` ,
Original file line number Diff line number Diff line change
1
+ import { APP_PATH , SEARCH_PARAMETER_DATE_FORMAT } from '@pinpoint-fe/constants' ;
2
+ import { convertTimeStringToTime , convertParamsToQueryString } from '@pinpoint-fe/utils' ;
3
+ import { parse , format , subMilliseconds } from 'date-fns' ;
4
+ import { LoaderFunctionArgs , redirect } from 'react-router-dom' ;
5
+
6
+ export const handleV2RouteLoader = ( { params, request } : LoaderFunctionArgs ) => {
7
+ const basePath = `${ APP_PATH . SERVER_MAP } /${ params . application } ` ;
8
+ const v2QueryParams = Object . fromEntries ( new URL ( request . url ) . searchParams ) ;
9
+ const currentDate = new Date ( ) ;
10
+
11
+ const to = parse ( params . endTime ! , SEARCH_PARAMETER_DATE_FORMAT , currentDate ) ;
12
+ const timeDiff = convertTimeStringToTime ( params . period ! ) ;
13
+ const from = subMilliseconds ( to , timeDiff ) ;
14
+ const formattedDateRange = {
15
+ from : format ( from , SEARCH_PARAMETER_DATE_FORMAT ) ,
16
+ to : format ( to , SEARCH_PARAMETER_DATE_FORMAT ) ,
17
+ } ;
18
+ const v3DateQueryString = convertParamsToQueryString ( {
19
+ ...formattedDateRange ,
20
+ ...v2QueryParams ,
21
+ } ) ;
22
+
23
+ return redirect ( `${ basePath } ?${ v3DateQueryString } ` ) ;
24
+ } ;
Original file line number Diff line number Diff line change @@ -105,3 +105,19 @@ export const formatNewLinedDateString = (date: Date | number) => {
105
105
106
106
return `${ format ( date , firstFormat ) } \n${ format ( date , secondFormat ) } ` ;
107
107
} ;
108
+
109
+ export const convertTimeStringToTime = ( timeString : string ) => {
110
+ const timePattern = / ^ ( \d + ) ( [ m h d ] ) $ / ;
111
+ const match = timeString . match ( timePattern ) ;
112
+ const value = Number ( match ?. [ 1 ] ) ;
113
+ const unit = match ?. [ 2 ] ;
114
+
115
+ switch ( unit ) {
116
+ case 'm' :
117
+ return value * 60 * 1000 ;
118
+ case 'h' :
119
+ return value * 60 * 60 * 1000 ;
120
+ case 'd' :
121
+ return value * 24 * 60 * 60 * 1000 ;
122
+ }
123
+ } ;
You can’t perform that action at this time.
0 commit comments