feat(ui): add existing-report analytics destination

This commit is contained in:
cesnimda
2026-10-06 19:26:14 +02:00
parent ec6baaeddd
commit 42a6e425b6
37 changed files with 2523 additions and 53 deletions
+8 -1
View File
@@ -17,6 +17,7 @@ import MemoryIcon from "@mui/icons-material/Memory";
import DescriptionOutlinedIcon from "@mui/icons-material/DescriptionOutlined";
import MailOutlineIcon from "@mui/icons-material/MailOutline";
import CompareArrowsIcon from "@mui/icons-material/CompareArrows";
import InsightsOutlinedIcon from "@mui/icons-material/InsightsOutlined";
import { Navigate, Route, Routes, useLocation, useNavigate, useParams, createBrowserRouter, RouterProvider } from "react-router-dom";
@@ -46,6 +47,7 @@ import { isSessionInvalidated, SESSION_INVALIDATED_EVENT } from "./sessionBounda
const AddJobModal = lazy(() => import("./components/AddJobModal"));
const DashboardView = lazy(() => import("./components/DashboardView"));
const AnalyticsPage = lazy(() => import("./views/AnalyticsPage"));
const JobDiscoveryPage = lazy(() => import("./views/JobDiscoveryPage"));
const CompaniesTable = lazy(() => import("./components/CompaniesTable"));
const SettingsView = lazy(() => import("./components/SettingsView"));
@@ -94,7 +96,8 @@ type MeResponse = {
};
function breadcrumbsFor(path: string, t: (k: any) => string): string[] {
if (path.startsWith("/dashboard")) return [t("home"), t("analytics"), t("overview")];
if (path.startsWith("/dashboard")) return [t("home"), t("dashboard")];
if (path.startsWith("/analytics")) return [t("home"), t("insights"), t("analytics")];
if (path.startsWith("/discover")) return [t("home"), t("discoverJobs")];
if (/^\/jobs\/\d+/.test(path)) return [t("home"), t("jobApplications"), t("jobDetails")];
if (path.startsWith("/jobs")) return [t("home"), t("jobApplications")];
@@ -119,6 +122,7 @@ function breadcrumbsFor(path: string, t: (k: any) => string): string[] {
function titleFor(path: string, t: (k: any) => string): string {
if (path === "/dashboard") return t("dashboard");
if (path.startsWith("/analytics")) return t("analytics");
if (path.startsWith("/reminders")) return t("reminders");
if (path.startsWith("/operations")) return t("operations");
if (path.startsWith("/discover")) return t("discoverJobs");
@@ -144,6 +148,7 @@ function titleFor(path: string, t: (k: any) => string): string {
function subtitleFor(path: string, t: (k: any) => string): string | undefined {
if (/^\/settings\/?$/.test(path)) return t("settingsPageDescription");
if (path === "/dashboard") return t("dashboardPageSubtitle");
if (path.startsWith("/analytics")) return t("analyticsPageSubtitle");
if (path.startsWith("/discover")) return t("discoverJobsSubtitle");
if (/^\/jobs\/\d+/.test(path)) return t("jobDetailsWorkspaceSubtitle");
if (path.startsWith("/jobs")) return t("jobsPageSubtitle");
@@ -306,6 +311,7 @@ function Shell({ jobPageSize, setJobPageSize, jobColumns, setJobColumns, themeMo
{ to: "/correspondence", label: t("correspondenceInbox"), icon: <MailOutlineIcon fontSize="small" />, section: t("jobSearch") },
{ to: "/career", label: t("careerWorkspaceProfileTab"), icon: <AccountCircleIcon fontSize="small" />, section: t("career") },
{ to: "/career/builder", label: t("cvBuilder"), icon: <DescriptionOutlinedIcon fontSize="small" />, section: t("career") },
{ to: "/analytics", label: t("analytics"), icon: <InsightsOutlinedIcon fontSize="small" />, section: t("insights") },
];
const navBottom: NavItem[] = [
@@ -387,6 +393,7 @@ function Shell({ jobPageSize, setJobPageSize, jobColumns, setJobColumns, themeMo
<Routes>
<Route path="/" element={<Navigate to="/dashboard" replace />} />
<Route path="/dashboard" element={<DashboardView />} />
<Route path="/analytics" element={<AnalyticsPage />} />
<Route path="/discover" element={<JobDiscoveryPage />} />
<Route path="/jobs" element={<JobTable refreshToken={refreshToken} pageSize={jobPageSize} onPageSizeChange={setAndPersistPageSize} columns={jobColumns} onColumnsChange={setAndPersistColumns} mode="jobs" />} />
<Route path="/jobs/:id" element={<ApplicationWorkspacePage />} />