Skip to content

Commit 6248968

Browse files
committed
feat: add breadcrumbs to other pages
1 parent 9fcacb3 commit 6248968

File tree

3 files changed

+25
-11
lines changed

3 files changed

+25
-11
lines changed

backend/src/handlers/programs_handler.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"errors"
99
"fmt"
1010
"net/http"
11+
"slices"
1112
"strconv"
1213
"strings"
1314
"time"
@@ -276,7 +277,7 @@ func (srv *Server) getCreatedByForHistory(id int, tableName string, pageMeta mod
276277
pageMeta.LastPage++
277278
pageMeta.Total++
278279
}
279-
if (args.Total == 0 || (int64(args.Page) == int64(pageMeta.LastPage) && numOfHistoryEvents < args.PerPage)) && (len(categories) == 0 || srv.containsCategory(categories, "info")) { //add get class created by here
280+
if (args.Total == 0 || (int64(args.Page) == int64(pageMeta.LastPage) && numOfHistoryEvents < args.PerPage)) && (len(categories) == 0 || slices.Contains(categories, "info")) { //add get class created by here
280281
switch tableName {
281282
case "programs":
282283
createdByDetails, err = srv.Db.GetProgramCreatedAtAndBy(id, args)
@@ -340,12 +341,3 @@ func (srv *Server) handleGetProgramFilters(w http.ResponseWriter, r *http.Reques
340341
}
341342
return writeJsonResponse(w, http.StatusOK, resp)
342343
}
343-
344-
func (srv *Server) containsCategory(categories []string, target string) bool {
345-
for _, category := range categories {
346-
if category == target {
347-
return true
348-
}
349-
}
350-
return false
351-
}

frontend/src/Pages/ResidentProfile.tsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
UserRole,
1111
ValidResident
1212
} from '@/common';
13+
import { useBreadcrumb } from '@/Context/BreadcrumbContext';
1314
import { hasFeature, isUserDeactivated } from '@/useAuth';
1415
import EngagementRateGraph from '@/Components/EngagementRateGraph';
1516
import { ResponsiveContainer } from 'recharts';
@@ -110,6 +111,20 @@ const ResidentProfile = () => {
110111
const [activeTab, setActiveTab] = useState<'libraries' | 'videos'>(
111112
'libraries'
112113
);
114+
const { setBreadcrumbItems } = useBreadcrumb();
115+
116+
useEffect(() => {
117+
if (metrics?.user) {
118+
setBreadcrumbItems([
119+
{ label: 'Residents', href: '/residents' },
120+
{
121+
label: `${metrics.user.name_first} ${metrics.user.name_last}`
122+
}
123+
]);
124+
}
125+
return () => setBreadcrumbItems([]);
126+
}, [metrics?.user, setBreadcrumbItems]);
127+
113128
if (!user) return null;
114129

115130
const { avgNumber, weekNumber, avgLabel, weekLabel } =

frontend/src/routeLoaders.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,18 +148,25 @@ export const getProgramData: LoaderFunction = async ({ params }) => {
148148
const categories = tagsResp.data as Option[];
149149
let program: ProgramOverview | undefined;
150150
let redirect: string | undefined;
151+
let breadcrumbs: BreadcrumbItem[] | undefined;
152+
151153
if (program_id) {
152154
const resp = await API.get(`programs/${program_id}`);
153155
if (resp.success) {
154156
program = resp.data as ProgramOverview;
157+
breadcrumbs = [
158+
{ label: 'Programs', href: '/programs' },
159+
{ label: program.name }
160+
];
155161
} else {
156162
redirectOnError(resp);
157163
}
158164
}
159165
return json({
160166
categories: categories,
161167
program: program,
162-
redirect: redirect
168+
redirect: redirect,
169+
breadcrumbs
163170
});
164171
};
165172

0 commit comments

Comments
 (0)