routing ff

deploy_exxeta
s8613 2025-06-29 21:29:39 +02:00
parent 43d39a7caa
commit 4c05334283
14 changed files with 204 additions and 196 deletions

View File

@ -181,7 +181,7 @@ export function ConfigTable({ from, trainingRunning }: ConfigTableProps) {
} }
navigate({ navigate({
to: `/config-detail/$kpiId`, to: `/ff/config-detail/$kpiId`,
params: { kpiId: kennzahl.id.toString() }, params: { kpiId: kennzahl.id.toString() },
search: from ? { from } : undefined, search: from ? { from } : undefined,
}); });

View File

@ -170,7 +170,7 @@ export default function KennzahlenTable({
const handleNavigateToDetail = (settingName: string) => { const handleNavigateToDetail = (settingName: string) => {
navigate({ navigate({
to: "/extractedResult/$pitchBook/$kpi", to: "/ff/extractedResult/$pitchBook/$kpi",
params: { params: {
pitchBook: pdfId, pitchBook: pdfId,
kpi: settingName, kpi: settingName,

View File

@ -59,7 +59,7 @@ export function PitchBooksTable() {
const handleRowClick = (pitchBookId: number) => { const handleRowClick = (pitchBookId: number) => {
navigate({ navigate({
to: "/extractedResult/$pitchBook", to: "/ff/extractedResult/$pitchBook",
params: { pitchBook: pitchBookId.toString() }, params: { pitchBook: pitchBookId.toString() },
search: { from: "overview" }, search: { from: "overview" },
}); });

View File

@ -47,7 +47,7 @@ export default function UploadPage() {
setPageId(null); setPageId(null);
setLoadingState(null); setLoadingState(null);
navigate({ navigate({
to: "/extractedResult/$pitchBook", to: "/ff/extractedResult/$pitchBook",
params: { pitchBook: progress.id.toString() }, params: { pitchBook: progress.id.toString() },
}); });
} }
@ -109,7 +109,7 @@ export default function UploadPage() {
/> />
</Box> </Box>
<IconButton onClick={() => navigate({ to: "/config" })}> <IconButton onClick={() => navigate({ to: "/ff/config" })}>
<SettingsIcon fontSize="large" /> <SettingsIcon fontSize="large" />
</IconButton> </IconButton>
</Box> </Box>
@ -204,8 +204,8 @@ export default function UploadPage() {
backgroundColor: "#383838", backgroundColor: "#383838",
"&:hover": { backgroundColor: "#2e2e2e" }, "&:hover": { backgroundColor: "#2e2e2e" },
}} }}
onMouseEnter={() => router.preloadRoute({ to: "/pitchbooks" })} onMouseEnter={() => router.preloadRoute({ to: "/ff/pitchbooks" })}
onClick={() => navigate({ to: "/pitchbooks" })} onClick={() => navigate({ to: "/ff/pitchbooks" })}
> >
Alle Pitchbooks anzeigen Alle Pitchbooks anzeigen
</Button> </Button>

View File

@ -1,6 +1,6 @@
import CssBaseline from "@mui/material/CssBaseline"; import CssBaseline from "@mui/material/CssBaseline";
import { ThemeProvider, createTheme } from "@mui/material/styles"; import { ThemeProvider, createTheme } from "@mui/material/styles";
import { RouterProvider, createRouter } from "@tanstack/react-router"; import {Link, RouterProvider, createRouter } from "@tanstack/react-router";
import { StrictMode } from "react"; import { StrictMode } from "react";
import ReactDOM from "react-dom/client"; import ReactDOM from "react-dom/client";
import "react-pdf/dist/Page/TextLayer.css"; import "react-pdf/dist/Page/TextLayer.css";
@ -27,6 +27,12 @@ const router = createRouter({
scrollRestoration: true, scrollRestoration: true,
defaultStructuralSharing: true, defaultStructuralSharing: true,
defaultPreloadStaleTime: 0, defaultPreloadStaleTime: 0,
defaultNotFoundComponent: () => (
<div>
<p>Not found!</p>
<Link to="/ff">Upload</Link>
</div>
),
}); });
// Register the router instance for type safety // Register the router instance for type safety

View File

@ -11,56 +11,58 @@
// Import Routes // Import Routes
import { Route as rootRoute } from './routes/__root' import { Route as rootRoute } from './routes/__root'
import { Route as PitchbooksImport } from './routes/pitchbooks' import { Route as FfIndexImport } from './routes/ff/index'
import { Route as ConfigAddImport } from './routes/config-add' import { Route as FfPitchbooksImport } from './routes/ff/pitchbooks'
import { Route as ConfigImport } from './routes/config' import { Route as FfConfigAddImport } from './routes/ff/config-add'
import { Route as IndexImport } from './routes/index' import { Route as FfConfigImport } from './routes/ff/config'
import { Route as ExtractedResultPitchBookImport } from './routes/extractedResult.$pitchBook' import { Route as FfExtractedResultPitchBookImport } from './routes/ff/extractedResult.$pitchBook'
import { Route as ConfigDetailKpiIdImport } from './routes/config-detail.$kpiId' import { Route as FfConfigDetailKpiIdImport } from './routes/ff/config-detail.$kpiId'
import { Route as ExtractedResultPitchBookKpiImport } from './routes/extractedResult_.$pitchBook.$kpi' import { Route as FfExtractedResultPitchBookKpiImport } from './routes/ff/extractedResult_.$pitchBook.$kpi'
// Create/Update Routes // Create/Update Routes
const PitchbooksRoute = PitchbooksImport.update({ const FfIndexRoute = FfIndexImport.update({
id: '/pitchbooks', id: '/ff/',
path: '/pitchbooks', path: '/ff/',
getParentRoute: () => rootRoute, getParentRoute: () => rootRoute,
} as any) } as any)
const ConfigAddRoute = ConfigAddImport.update({ const FfPitchbooksRoute = FfPitchbooksImport.update({
id: '/config-add', id: '/ff/pitchbooks',
path: '/config-add', path: '/ff/pitchbooks',
getParentRoute: () => rootRoute, getParentRoute: () => rootRoute,
} as any) } as any)
const ConfigRoute = ConfigImport.update({ const FfConfigAddRoute = FfConfigAddImport.update({
id: '/config', id: '/ff/config-add',
path: '/config', path: '/ff/config-add',
getParentRoute: () => rootRoute, getParentRoute: () => rootRoute,
} as any) } as any)
const IndexRoute = IndexImport.update({ const FfConfigRoute = FfConfigImport.update({
id: '/', id: '/ff/config',
path: '/', path: '/ff/config',
getParentRoute: () => rootRoute, getParentRoute: () => rootRoute,
} as any) } as any)
const ExtractedResultPitchBookRoute = ExtractedResultPitchBookImport.update({ const FfExtractedResultPitchBookRoute = FfExtractedResultPitchBookImport.update(
id: '/extractedResult/$pitchBook', {
path: '/extractedResult/$pitchBook', id: '/ff/extractedResult/$pitchBook',
path: '/ff/extractedResult/$pitchBook',
getParentRoute: () => rootRoute,
} as any,
)
const FfConfigDetailKpiIdRoute = FfConfigDetailKpiIdImport.update({
id: '/ff/config-detail/$kpiId',
path: '/ff/config-detail/$kpiId',
getParentRoute: () => rootRoute, getParentRoute: () => rootRoute,
} as any) } as any)
const ConfigDetailKpiIdRoute = ConfigDetailKpiIdImport.update({ const FfExtractedResultPitchBookKpiRoute =
id: '/config-detail/$kpiId', FfExtractedResultPitchBookKpiImport.update({
path: '/config-detail/$kpiId', id: '/ff/extractedResult_/$pitchBook/$kpi',
getParentRoute: () => rootRoute, path: '/ff/extractedResult/$pitchBook/$kpi',
} as any)
const ExtractedResultPitchBookKpiRoute =
ExtractedResultPitchBookKpiImport.update({
id: '/extractedResult_/$pitchBook/$kpi',
path: '/extractedResult/$pitchBook/$kpi',
getParentRoute: () => rootRoute, getParentRoute: () => rootRoute,
} as any) } as any)
@ -68,53 +70,53 @@ const ExtractedResultPitchBookKpiRoute =
declare module '@tanstack/react-router' { declare module '@tanstack/react-router' {
interface FileRoutesByPath { interface FileRoutesByPath {
'/': { '/ff/config': {
id: '/' id: '/ff/config'
path: '/' path: '/ff/config'
fullPath: '/' fullPath: '/ff/config'
preLoaderRoute: typeof IndexImport preLoaderRoute: typeof FfConfigImport
parentRoute: typeof rootRoute parentRoute: typeof rootRoute
} }
'/config': { '/ff/config-add': {
id: '/config' id: '/ff/config-add'
path: '/config' path: '/ff/config-add'
fullPath: '/config' fullPath: '/ff/config-add'
preLoaderRoute: typeof ConfigImport preLoaderRoute: typeof FfConfigAddImport
parentRoute: typeof rootRoute parentRoute: typeof rootRoute
} }
'/config-add': { '/ff/pitchbooks': {
id: '/config-add' id: '/ff/pitchbooks'
path: '/config-add' path: '/ff/pitchbooks'
fullPath: '/config-add' fullPath: '/ff/pitchbooks'
preLoaderRoute: typeof ConfigAddImport preLoaderRoute: typeof FfPitchbooksImport
parentRoute: typeof rootRoute parentRoute: typeof rootRoute
} }
'/pitchbooks': { '/ff/': {
id: '/pitchbooks' id: '/ff/'
path: '/pitchbooks' path: '/ff'
fullPath: '/pitchbooks' fullPath: '/ff'
preLoaderRoute: typeof PitchbooksImport preLoaderRoute: typeof FfIndexImport
parentRoute: typeof rootRoute parentRoute: typeof rootRoute
} }
'/config-detail/$kpiId': { '/ff/config-detail/$kpiId': {
id: '/config-detail/$kpiId' id: '/ff/config-detail/$kpiId'
path: '/config-detail/$kpiId' path: '/ff/config-detail/$kpiId'
fullPath: '/config-detail/$kpiId' fullPath: '/ff/config-detail/$kpiId'
preLoaderRoute: typeof ConfigDetailKpiIdImport preLoaderRoute: typeof FfConfigDetailKpiIdImport
parentRoute: typeof rootRoute parentRoute: typeof rootRoute
} }
'/extractedResult/$pitchBook': { '/ff/extractedResult/$pitchBook': {
id: '/extractedResult/$pitchBook' id: '/ff/extractedResult/$pitchBook'
path: '/extractedResult/$pitchBook' path: '/ff/extractedResult/$pitchBook'
fullPath: '/extractedResult/$pitchBook' fullPath: '/ff/extractedResult/$pitchBook'
preLoaderRoute: typeof ExtractedResultPitchBookImport preLoaderRoute: typeof FfExtractedResultPitchBookImport
parentRoute: typeof rootRoute parentRoute: typeof rootRoute
} }
'/extractedResult_/$pitchBook/$kpi': { '/ff/extractedResult_/$pitchBook/$kpi': {
id: '/extractedResult_/$pitchBook/$kpi' id: '/ff/extractedResult_/$pitchBook/$kpi'
path: '/extractedResult/$pitchBook/$kpi' path: '/ff/extractedResult/$pitchBook/$kpi'
fullPath: '/extractedResult/$pitchBook/$kpi' fullPath: '/ff/extractedResult/$pitchBook/$kpi'
preLoaderRoute: typeof ExtractedResultPitchBookKpiImport preLoaderRoute: typeof FfExtractedResultPitchBookKpiImport
parentRoute: typeof rootRoute parentRoute: typeof rootRoute
} }
} }
@ -123,85 +125,85 @@ declare module '@tanstack/react-router' {
// Create and export the route tree // Create and export the route tree
export interface FileRoutesByFullPath { export interface FileRoutesByFullPath {
'/': typeof IndexRoute '/ff/config': typeof FfConfigRoute
'/config': typeof ConfigRoute '/ff/config-add': typeof FfConfigAddRoute
'/config-add': typeof ConfigAddRoute '/ff/pitchbooks': typeof FfPitchbooksRoute
'/pitchbooks': typeof PitchbooksRoute '/ff': typeof FfIndexRoute
'/config-detail/$kpiId': typeof ConfigDetailKpiIdRoute '/ff/config-detail/$kpiId': typeof FfConfigDetailKpiIdRoute
'/extractedResult/$pitchBook': typeof ExtractedResultPitchBookRoute '/ff/extractedResult/$pitchBook': typeof FfExtractedResultPitchBookRoute
'/extractedResult/$pitchBook/$kpi': typeof ExtractedResultPitchBookKpiRoute '/ff/extractedResult/$pitchBook/$kpi': typeof FfExtractedResultPitchBookKpiRoute
} }
export interface FileRoutesByTo { export interface FileRoutesByTo {
'/': typeof IndexRoute '/ff/config': typeof FfConfigRoute
'/config': typeof ConfigRoute '/ff/config-add': typeof FfConfigAddRoute
'/config-add': typeof ConfigAddRoute '/ff/pitchbooks': typeof FfPitchbooksRoute
'/pitchbooks': typeof PitchbooksRoute '/ff': typeof FfIndexRoute
'/config-detail/$kpiId': typeof ConfigDetailKpiIdRoute '/ff/config-detail/$kpiId': typeof FfConfigDetailKpiIdRoute
'/extractedResult/$pitchBook': typeof ExtractedResultPitchBookRoute '/ff/extractedResult/$pitchBook': typeof FfExtractedResultPitchBookRoute
'/extractedResult/$pitchBook/$kpi': typeof ExtractedResultPitchBookKpiRoute '/ff/extractedResult/$pitchBook/$kpi': typeof FfExtractedResultPitchBookKpiRoute
} }
export interface FileRoutesById { export interface FileRoutesById {
__root__: typeof rootRoute __root__: typeof rootRoute
'/': typeof IndexRoute '/ff/config': typeof FfConfigRoute
'/config': typeof ConfigRoute '/ff/config-add': typeof FfConfigAddRoute
'/config-add': typeof ConfigAddRoute '/ff/pitchbooks': typeof FfPitchbooksRoute
'/pitchbooks': typeof PitchbooksRoute '/ff/': typeof FfIndexRoute
'/config-detail/$kpiId': typeof ConfigDetailKpiIdRoute '/ff/config-detail/$kpiId': typeof FfConfigDetailKpiIdRoute
'/extractedResult/$pitchBook': typeof ExtractedResultPitchBookRoute '/ff/extractedResult/$pitchBook': typeof FfExtractedResultPitchBookRoute
'/extractedResult_/$pitchBook/$kpi': typeof ExtractedResultPitchBookKpiRoute '/ff/extractedResult_/$pitchBook/$kpi': typeof FfExtractedResultPitchBookKpiRoute
} }
export interface FileRouteTypes { export interface FileRouteTypes {
fileRoutesByFullPath: FileRoutesByFullPath fileRoutesByFullPath: FileRoutesByFullPath
fullPaths: fullPaths:
| '/' | '/ff/config'
| '/config' | '/ff/config-add'
| '/config-add' | '/ff/pitchbooks'
| '/pitchbooks' | '/ff'
| '/config-detail/$kpiId' | '/ff/config-detail/$kpiId'
| '/extractedResult/$pitchBook' | '/ff/extractedResult/$pitchBook'
| '/extractedResult/$pitchBook/$kpi' | '/ff/extractedResult/$pitchBook/$kpi'
fileRoutesByTo: FileRoutesByTo fileRoutesByTo: FileRoutesByTo
to: to:
| '/' | '/ff/config'
| '/config' | '/ff/config-add'
| '/config-add' | '/ff/pitchbooks'
| '/pitchbooks' | '/ff'
| '/config-detail/$kpiId' | '/ff/config-detail/$kpiId'
| '/extractedResult/$pitchBook' | '/ff/extractedResult/$pitchBook'
| '/extractedResult/$pitchBook/$kpi' | '/ff/extractedResult/$pitchBook/$kpi'
id: id:
| '__root__' | '__root__'
| '/' | '/ff/config'
| '/config' | '/ff/config-add'
| '/config-add' | '/ff/pitchbooks'
| '/pitchbooks' | '/ff/'
| '/config-detail/$kpiId' | '/ff/config-detail/$kpiId'
| '/extractedResult/$pitchBook' | '/ff/extractedResult/$pitchBook'
| '/extractedResult_/$pitchBook/$kpi' | '/ff/extractedResult_/$pitchBook/$kpi'
fileRoutesById: FileRoutesById fileRoutesById: FileRoutesById
} }
export interface RootRouteChildren { export interface RootRouteChildren {
IndexRoute: typeof IndexRoute FfConfigRoute: typeof FfConfigRoute
ConfigRoute: typeof ConfigRoute FfConfigAddRoute: typeof FfConfigAddRoute
ConfigAddRoute: typeof ConfigAddRoute FfPitchbooksRoute: typeof FfPitchbooksRoute
PitchbooksRoute: typeof PitchbooksRoute FfIndexRoute: typeof FfIndexRoute
ConfigDetailKpiIdRoute: typeof ConfigDetailKpiIdRoute FfConfigDetailKpiIdRoute: typeof FfConfigDetailKpiIdRoute
ExtractedResultPitchBookRoute: typeof ExtractedResultPitchBookRoute FfExtractedResultPitchBookRoute: typeof FfExtractedResultPitchBookRoute
ExtractedResultPitchBookKpiRoute: typeof ExtractedResultPitchBookKpiRoute FfExtractedResultPitchBookKpiRoute: typeof FfExtractedResultPitchBookKpiRoute
} }
const rootRouteChildren: RootRouteChildren = { const rootRouteChildren: RootRouteChildren = {
IndexRoute: IndexRoute, FfConfigRoute: FfConfigRoute,
ConfigRoute: ConfigRoute, FfConfigAddRoute: FfConfigAddRoute,
ConfigAddRoute: ConfigAddRoute, FfPitchbooksRoute: FfPitchbooksRoute,
PitchbooksRoute: PitchbooksRoute, FfIndexRoute: FfIndexRoute,
ConfigDetailKpiIdRoute: ConfigDetailKpiIdRoute, FfConfigDetailKpiIdRoute: FfConfigDetailKpiIdRoute,
ExtractedResultPitchBookRoute: ExtractedResultPitchBookRoute, FfExtractedResultPitchBookRoute: FfExtractedResultPitchBookRoute,
ExtractedResultPitchBookKpiRoute: ExtractedResultPitchBookKpiRoute, FfExtractedResultPitchBookKpiRoute: FfExtractedResultPitchBookKpiRoute,
} }
export const routeTree = rootRoute export const routeTree = rootRoute
@ -214,35 +216,35 @@ export const routeTree = rootRoute
"__root__": { "__root__": {
"filePath": "__root.tsx", "filePath": "__root.tsx",
"children": [ "children": [
"/", "/ff/config",
"/config", "/ff/config-add",
"/config-add", "/ff/pitchbooks",
"/pitchbooks", "/ff/",
"/config-detail/$kpiId", "/ff/config-detail/$kpiId",
"/extractedResult/$pitchBook", "/ff/extractedResult/$pitchBook",
"/extractedResult_/$pitchBook/$kpi" "/ff/extractedResult_/$pitchBook/$kpi"
] ]
}, },
"/": { "/ff/config": {
"filePath": "index.tsx" "filePath": "ff/config.tsx"
}, },
"/config": { "/ff/config-add": {
"filePath": "config.tsx" "filePath": "ff/config-add.tsx"
}, },
"/config-add": { "/ff/pitchbooks": {
"filePath": "config-add.tsx" "filePath": "ff/pitchbooks.tsx"
}, },
"/pitchbooks": { "/ff/": {
"filePath": "pitchbooks.tsx" "filePath": "ff/index.tsx"
}, },
"/config-detail/$kpiId": { "/ff/config-detail/$kpiId": {
"filePath": "config-detail.$kpiId.tsx" "filePath": "ff/config-detail.$kpiId.tsx"
}, },
"/extractedResult/$pitchBook": { "/ff/extractedResult/$pitchBook": {
"filePath": "extractedResult.$pitchBook.tsx" "filePath": "ff/extractedResult.$pitchBook.tsx"
}, },
"/extractedResult_/$pitchBook/$kpi": { "/ff/extractedResult_/$pitchBook/$kpi": {
"filePath": "extractedResult_.$pitchBook.$kpi.tsx" "filePath": "ff/extractedResult_.$pitchBook.$kpi.tsx"
} }
} }
} }

View File

@ -1,12 +1,12 @@
import { createFileRoute, useNavigate } from "@tanstack/react-router"; import { createFileRoute, useNavigate } from "@tanstack/react-router";
import { Box, Typography, IconButton } from "@mui/material"; import { Box, Typography, IconButton } from "@mui/material";
import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import ArrowBackIcon from "@mui/icons-material/ArrowBack";
import { KPIForm } from "../components/KPIForm"; import { KPIForm } from "../../components/KPIForm";
import type { Kennzahl } from "../types/kpi"; import type { Kennzahl } from "../../types/kpi";
import { API_HOST } from "../util/api"; import { API_HOST } from "../../util/api";
export const Route = createFileRoute("/config-add")({ export const Route = createFileRoute("/ff/config-add")({
component: ConfigAddPage, component: ConfigAddPage,
validateSearch: (search: Record<string, unknown>): { from?: string } => { validateSearch: (search: Record<string, unknown>): { from?: string } => {
return { return {
@ -21,7 +21,7 @@ function ConfigAddPage() {
const handleBack = () => { const handleBack = () => {
navigate({ navigate({
to: "/config", to: "/ff/config",
search: from ? { from } : undefined, search: from ? { from } : undefined,
}); });
}; };
@ -54,7 +54,7 @@ function ConfigAddPage() {
} }
navigate({ navigate({
to: "/config", to: "/ff/config",
search: { success: "true", ...(from ? { from } : {}) }, search: { success: "true", ...(from ? { from } : {}) },
}); });
@ -67,7 +67,7 @@ function ConfigAddPage() {
const handleCancel = () => { const handleCancel = () => {
navigate({ navigate({
to: "/config", to: "/ff/config",
search: from ? { from } : undefined, search: from ? { from } : undefined,
}); });
}; };

View File

@ -4,12 +4,12 @@ import {
} from "@mui/material"; } from "@mui/material";
import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import ArrowBackIcon from "@mui/icons-material/ArrowBack";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import type { Kennzahl } from "../types/kpi"; import type { Kennzahl } from "../../types/kpi";
import { KPIForm } from "../components/KPIForm"; import { KPIForm } from "../../components/KPIForm";
import { typeDisplayMapping } from "../types/kpi"; import { typeDisplayMapping } from "../../types/kpi";
import { API_HOST } from "../util/api"; import { API_HOST } from "../../util/api";
export const Route = createFileRoute("/config-detail/$kpiId")({ export const Route = createFileRoute("/ff/config-detail/$kpiId")({
component: KPIDetailPage, component: KPIDetailPage,
validateSearch: (search: Record<string, unknown>): { from?: string } => { validateSearch: (search: Record<string, unknown>): { from?: string } => {
return { return {
@ -29,7 +29,7 @@ function KPIDetailPage() {
const handleBack = () => { const handleBack = () => {
navigate({ navigate({
to: "/config", to: "/ff/config",
search: from ? { from } : undefined search: from ? { from } : undefined
}); });
}; };
@ -121,7 +121,7 @@ function KPIDetailPage() {
</Typography> </Typography>
<Button <Button
variant="contained" variant="contained"
onClick={() => navigate({ to: "/config" })} onClick={() => navigate({ to: "/ff/config" })}
sx={{ sx={{
backgroundColor: "#383838", backgroundColor: "#383838",
"&:hover": { backgroundColor: "#2e2e2e" }, "&:hover": { backgroundColor: "#2e2e2e" },

View File

@ -2,8 +2,8 @@ import { createFileRoute } from "@tanstack/react-router";
import { Box, Button, IconButton, Typography } from "@mui/material"; import { Box, Button, IconButton, Typography } from "@mui/material";
import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import ArrowBackIcon from "@mui/icons-material/ArrowBack";
import { useNavigate } from "@tanstack/react-router"; import { useNavigate } from "@tanstack/react-router";
import { ConfigTable } from "../components/ConfigTable"; import { ConfigTable } from "../../components/ConfigTable";
import { API_HOST } from "../util/api"; import { API_HOST } from "../../util/api";
import Snackbar from "@mui/material/Snackbar"; import Snackbar from "@mui/material/Snackbar";
import MuiAlert from "@mui/material/Alert"; import MuiAlert from "@mui/material/Alert";
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
@ -14,7 +14,7 @@ import Tooltip from "@mui/material/Tooltip";
export const Route = createFileRoute("/config")({ export const Route = createFileRoute("/ff/config")({
component: ConfigPage, component: ConfigPage,
validateSearch: (search: Record<string, unknown>): { from?: string; success?: string } => { validateSearch: (search: Record<string, unknown>): { from?: string; success?: string } => {
return { return {
@ -58,7 +58,7 @@ function ConfigPage() {
if (success === "true") { if (success === "true") {
setTimeout(() => { setTimeout(() => {
navigate({ navigate({
to: "/config", to: "/ff/config",
search: from ? { from } : undefined, search: from ? { from } : undefined,
replace: true replace: true
}); });
@ -87,16 +87,16 @@ function ConfigPage() {
const handleAddNewKPI = () => { const handleAddNewKPI = () => {
navigate({ navigate({
to: "/config-add", to: "/ff/config-add",
search: from ? { from } : undefined search: from ? { from } : undefined
}); });
}; };
const handleBack = () => { const handleBack = () => {
if (from === "pitchbooks") { if (from === "pitchbooks") {
navigate({ to: "/pitchbooks" }); navigate({ to: "/ff/pitchbooks" });
} else { } else {
navigate({ to: "/" }); navigate({ to: "/ff" });
} }
}; };

View File

@ -4,12 +4,12 @@ import ArrowBackIcon from "@mui/icons-material/ArrowBack";
import { useSuspenseQuery } from "@tanstack/react-query"; import { useSuspenseQuery } from "@tanstack/react-query";
import { createFileRoute, useNavigate } from "@tanstack/react-router"; import { createFileRoute, useNavigate } from "@tanstack/react-router";
import { useCallback, useState, useMemo } from "react"; import { useCallback, useState, useMemo } from "react";
import KennzahlenTable from "../components/KennzahlenTable"; import KennzahlenTable from "../../components/KennzahlenTable";
import PDFViewer from "../components/pdfViewer"; import PDFViewer from "../../components/pdfViewer";
import { kpiQueryOptions, settingsQueryOptions } from "../util/query"; import { kpiQueryOptions, settingsQueryOptions } from "../../util/query";
import { redirect } from "@tanstack/react-router"; import { redirect } from "@tanstack/react-router";
export const Route = createFileRoute("/extractedResult/$pitchBook")({ export const Route = createFileRoute("/ff/extractedResult/$pitchBook")({
component: ExtractedResultsPage, component: ExtractedResultsPage,
validateSearch: (search: Record<string, unknown>): { from?: string } => { validateSearch: (search: Record<string, unknown>): { from?: string } => {
return { return {
@ -23,7 +23,7 @@ export const Route = createFileRoute("/extractedResult/$pitchBook")({
]); ]);
if (results[0].status === "rejected") { if (results[0].status === "rejected") {
throw redirect({ throw redirect({
to: "/" to: "/ff"
}); });
} }
return results; return results;
@ -143,7 +143,7 @@ function ExtractedResultsPage() {
<Box display="flex" alignItems="center" gap={3}> <Box display="flex" alignItems="center" gap={3}>
{from === "overview" && ( {from === "overview" && (
<IconButton <IconButton
onClick={() => navigate({ to: "/pitchbooks" })} onClick={() => navigate({ to: "/ff/pitchbooks" })}
sx={{ ml: -1 }} sx={{ ml: -1 }}
> >
<ArrowBackIcon fontSize="large" sx={{ color: '#383838' }}/> <ArrowBackIcon fontSize="large" sx={{ color: '#383838' }}/>
@ -259,7 +259,7 @@ function ExtractedResultsPage() {
<Button <Button
variant="contained" variant="contained"
sx={{ backgroundColor: "#383838" }} sx={{ backgroundColor: "#383838" }}
onClick={() => navigate({ to: "/" })} onClick={() => navigate({ to: "/ff" })}
> >
Neues Pitchbook hochladen Neues Pitchbook hochladen
</Button> </Button>

View File

@ -28,12 +28,12 @@ import {
} from "@tanstack/react-query"; } from "@tanstack/react-query";
import { createFileRoute, useNavigate } from "@tanstack/react-router"; import { createFileRoute, useNavigate } from "@tanstack/react-router";
import { useEffect, useState, type KeyboardEvent } from "react"; import { useEffect, useState, type KeyboardEvent } from "react";
import PDFViewer from "../components/pdfViewer"; import PDFViewer from "../../components/pdfViewer";
import { fetchPutKPI } from "../util/api"; import { fetchPutKPI } from "../../util/api";
import { kpiQueryOptions } from "../util/query"; import { kpiQueryOptions } from "../../util/query";
import { redirect } from "@tanstack/react-router"; import { redirect } from "@tanstack/react-router";
export const Route = createFileRoute("/extractedResult_/$pitchBook/$kpi")({ export const Route = createFileRoute("/ff/extractedResult_/$pitchBook/$kpi")({
component: ExtractedResultsPage, component: ExtractedResultsPage,
validateSearch: (search: Record<string, unknown>) => { validateSearch: (search: Record<string, unknown>) => {
return { return {
@ -45,7 +45,7 @@ export const Route = createFileRoute("/extractedResult_/$pitchBook/$kpi")({
return await queryClient.ensureQueryData(kpiQueryOptions(pitchBook)); return await queryClient.ensureQueryData(kpiQueryOptions(pitchBook));
} catch (err) { } catch (err) {
throw redirect({ throw redirect({
to: "/" to: "/ff"
}); });
} }
}, },
@ -151,7 +151,7 @@ function ExtractedResultsPage() {
queryKey: ["pitchBookKPI", pitchBook], queryKey: ["pitchBookKPI", pitchBook],
}); });
navigate({ navigate({
to: "/extractedResult/$pitchBook", to: "/ff/extractedResult/$pitchBook",
params: { pitchBook }, params: { pitchBook },
search: from ? { from } : undefined search: from ? { from } : undefined
}); });
@ -216,7 +216,7 @@ function ExtractedResultsPage() {
setShowConfirmDialog(true); setShowConfirmDialog(true);
} else { } else {
navigate({ navigate({
to: "/extractedResult/$pitchBook", to: "/ff/extractedResult/$pitchBook",
params: { pitchBook }, params: { pitchBook },
search: from ? { from } : undefined search: from ? { from } : undefined
}); });
@ -226,7 +226,7 @@ function ExtractedResultsPage() {
const handleConfirmDiscard = () => { const handleConfirmDiscard = () => {
setShowConfirmDialog(false); setShowConfirmDialog(false);
navigate({ navigate({
to: "/extractedResult/$pitchBook", to: "/ff/extractedResult/$pitchBook",
params: { pitchBook }, params: { pitchBook },
search: from ? { from } : undefined search: from ? { from } : undefined
}); });

View File

@ -1,8 +1,8 @@
import { createFileRoute } from "@tanstack/react-router"; import { createFileRoute } from "@tanstack/react-router";
import UploadPage from "../components/UploadPage"; import UploadPage from "../../components/UploadPage";
export const Route = createFileRoute("/")({ export const Route = createFileRoute("/ff/")({
component: App, component: App,
}); });

View File

@ -3,10 +3,10 @@ import { Box, Typography, IconButton } from "@mui/material";
import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import ArrowBackIcon from "@mui/icons-material/ArrowBack";
import SettingsIcon from "@mui/icons-material/Settings"; import SettingsIcon from "@mui/icons-material/Settings";
import { useNavigate } from "@tanstack/react-router"; import { useNavigate } from "@tanstack/react-router";
import { PitchBooksTable } from "../components/PitchBooksTable"; import { PitchBooksTable } from "../../components/PitchBooksTable";
import { pitchBooksQueryOptions } from "../util/query"; import { pitchBooksQueryOptions } from "../../util/query";
export const Route = createFileRoute("/pitchbooks")({ export const Route = createFileRoute("/ff/pitchbooks")({
component: PitchBooksPage, component: PitchBooksPage,
loader: ({ context: { queryClient } }) => loader: ({ context: { queryClient } }) =>
queryClient.ensureQueryData(pitchBooksQueryOptions()), queryClient.ensureQueryData(pitchBooksQueryOptions()),
@ -35,7 +35,7 @@ function PitchBooksPage() {
mb={4} mb={4}
> >
<Box display="flex" alignItems="center"> <Box display="flex" alignItems="center">
<IconButton onClick={() => navigate({ to: "/" })}> <IconButton onClick={() => navigate({ to: "/ff" })}>
<ArrowBackIcon fontSize="large" sx={{ color: '#383838' }}/> <ArrowBackIcon fontSize="large" sx={{ color: '#383838' }}/>
</IconButton> </IconButton>
<Typography variant="h5" fontWeight="bold" ml={3}> <Typography variant="h5" fontWeight="bold" ml={3}>
@ -44,7 +44,7 @@ function PitchBooksPage() {
</Box> </Box>
<IconButton <IconButton
onClick={() => navigate({ onClick={() => navigate({
to: "/config", to: "/ff/config",
search: { from: "pitchbooks" } search: { from: "pitchbooks" }
})} })}
> >

View File

@ -4,7 +4,7 @@ import { defineConfig } from "vite";
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default defineConfig({ export default defineConfig({
base: "./", base: "/ff/",
plugins: [TanStackRouterVite({ autoCodeSplitting: true }), viteReact()], plugins: [TanStackRouterVite({ autoCodeSplitting: true }), viteReact()],
build: { build: {
chunkSizeWarningLimit: 1000, // default ist 500 chunkSizeWarningLimit: 1000, // default ist 500