Skip to content

Commit cf79978

Browse files
committed
Move weekly and interval to search params
1 parent 53c282d commit cf79978

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { Helmet } from "react-helmet-async";
2121
import { getTemplatePageTitle } from "../utils";
2222
import { Loader } from "components/Loader/Loader";
2323
import {
24+
Template,
2425
TemplateInsightsResponse,
2526
TemplateParameterUsage,
2627
TemplateParameterValue,
@@ -48,24 +49,31 @@ import LinkOutlined from "@mui/icons-material/LinkOutlined";
4849
import { InsightsInterval, IntervalMenu } from "./IntervalMenu";
4950
import { WeeklyPreset, WeeklyPresetsMenu } from "./WeeklyPresetsMenu";
5051
import { insightsTemplate, insightsUserLatency } from "api/queries/insights";
52+
import { useSearchParams } from "react-router-dom";
5153

5254
export default function TemplateInsightsPage() {
5355
const { template } = useTemplateLayoutContext();
5456
const now = new Date();
57+
const [searchParams, setSearchParams] = useSearchParams();
5558

5659
const defaultWeeklyPreset = 4;
5760
const defaultDateRangeValue = {
5861
startDate: subDays(now, 6),
5962
endDate: now,
6063
};
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+
};
6176

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);
6977
const [dateRangeValue, setDateRangeValue] = useState<DateRangeValue>(
7078
defaultDateRangeValue,
7179
);
@@ -91,12 +99,14 @@ export default function TemplateInsightsPage() {
9199
<IntervalMenu
92100
value={interval}
93101
onChange={(interval) => {
94-
setInterval(interval);
95102
if (interval === "week") {
96103
setWeeklyPreset(defaultWeeklyPreset);
97104
} else {
98105
setDateRangeValue(defaultDateRangeValue);
99106
}
107+
108+
searchParams.set("interval", interval);
109+
setSearchParams(searchParams);
100110
}}
101111
/>
102112
{interval === "day" ? (
@@ -117,6 +127,13 @@ export default function TemplateInsightsPage() {
117127
);
118128
}
119129

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+
120137
export const TemplateInsightsPageView = ({
121138
templateInsights,
122139
userLatency,

0 commit comments

Comments
 (0)