@@ -21,6 +21,7 @@ import { Helmet } from "react-helmet-async";
21
21
import { getTemplatePageTitle } from "../utils" ;
22
22
import { Loader } from "components/Loader/Loader" ;
23
23
import {
24
+ Template ,
24
25
TemplateInsightsResponse ,
25
26
TemplateParameterUsage ,
26
27
TemplateParameterValue ,
@@ -48,24 +49,31 @@ import LinkOutlined from "@mui/icons-material/LinkOutlined";
48
49
import { InsightsInterval , IntervalMenu } from "./IntervalMenu" ;
49
50
import { WeeklyPreset , WeeklyPresetsMenu } from "./WeeklyPresetsMenu" ;
50
51
import { insightsTemplate , insightsUserLatency } from "api/queries/insights" ;
52
+ import { useSearchParams } from "react-router-dom" ;
51
53
52
54
export default function TemplateInsightsPage ( ) {
53
55
const { template } = useTemplateLayoutContext ( ) ;
54
56
const now = new Date ( ) ;
57
+ const [ searchParams , setSearchParams ] = useSearchParams ( ) ;
55
58
56
59
const defaultWeeklyPreset = 4 ;
57
60
const defaultDateRangeValue = {
58
61
startDate : subDays ( now , 6 ) ,
59
62
endDate : now ,
60
63
} ;
64
+ const defaultInterval = getDefaultInterval ( template ) ;
65
+
66
+ const interval =
67
+ ( searchParams . get ( "interval" ) as InsightsInterval ) || defaultInterval ;
68
+
69
+ const weeklyPreset =
70
+ ( Number ( searchParams . get ( "weeklyPreset" ) ) as WeeklyPreset ) ||
71
+ defaultWeeklyPreset ;
72
+ const setWeeklyPreset = ( newWeeklyPreset : WeeklyPreset ) => {
73
+ searchParams . set ( "weeklyPreset" , newWeeklyPreset . toString ( ) ) ;
74
+ setSearchParams ( searchParams ) ;
75
+ } ;
61
76
62
- const [ interval , setInterval ] = useState < InsightsInterval > ( ( ) => {
63
- const templateCreateDate = new Date ( template . created_at ) ;
64
- const hasFiveWeeksOrMore = addWeeks ( templateCreateDate , 5 ) < now ;
65
- return hasFiveWeeksOrMore ? "week" : "day" ;
66
- } ) ;
67
- const [ weeklyPreset , setWeeklyPreset ] =
68
- useState < WeeklyPreset > ( defaultWeeklyPreset ) ;
69
77
const [ dateRangeValue , setDateRangeValue ] = useState < DateRangeValue > (
70
78
defaultDateRangeValue ,
71
79
) ;
@@ -91,12 +99,14 @@ export default function TemplateInsightsPage() {
91
99
< IntervalMenu
92
100
value = { interval }
93
101
onChange = { ( interval ) => {
94
- setInterval ( interval ) ;
95
102
if ( interval === "week" ) {
96
103
setWeeklyPreset ( defaultWeeklyPreset ) ;
97
104
} else {
98
105
setDateRangeValue ( defaultDateRangeValue ) ;
99
106
}
107
+
108
+ searchParams . set ( "interval" , interval ) ;
109
+ setSearchParams ( searchParams ) ;
100
110
} }
101
111
/>
102
112
{ interval === "day" ? (
@@ -117,6 +127,13 @@ export default function TemplateInsightsPage() {
117
127
) ;
118
128
}
119
129
130
+ const getDefaultInterval = ( template : Template ) => {
131
+ const now = new Date ( ) ;
132
+ const templateCreateDate = new Date ( template . created_at ) ;
133
+ const hasFiveWeeksOrMore = addWeeks ( templateCreateDate , 5 ) < now ;
134
+ return hasFiveWeeksOrMore ? "week" : "day" ;
135
+ } ;
136
+
120
137
export const TemplateInsightsPageView = ( {
121
138
templateInsights,
122
139
userLatency,
0 commit comments