- C1 (issue 1): over target follows VISUAL ticket hours, not the timer. - C2 (issue 24): a Q.C. reject always needs a reason; accept needs an NCR number after a reject without one. - C3 (issue 25): an incomplete unit ITP blocks filing. - C4 (issue 27): prints open the print dialog on the page, no new tab. - C5 (issue 31): filing is blocked while VISUAL shows a work order open; the feed sets vclosed on VISUAL packets. - C6 (issue 8): the data book leaves out the history pages. - C7 (issue 18): the supervisor approves each received short; accept and filing wait for it. - C8 (issue 23): per-department checklists, edited by the department supervisor or Admin, frozen at START. - C9 (issue 32): Q.C. and Clerical may run the stamp check. - C10 (issue 33): the PM screen and reports are for PS-ProjectMgmt and Admin only. - C11 (issue 36): the Stall screen lists the packets assigned to the welder, at the supervisor's stall. Migration 0011. Docs: PLAN (also issue 9 confirmed, issue 4 asked), POLICY, SECURITY, SCHEMA, FEED, README, CHANGELOG. Co-Authored-By: Claude Opus 5.5 <[email protected]>
90 lines
3.0 KiB
TypeScript
90 lines
3.0 KiB
TypeScript
import { BrowserRouter, Route, Routes } from "react-router";
|
|
import { AuthProvider } from "./auth/AuthProvider";
|
|
import { Layout } from "./components/Layout";
|
|
import { RequireAuth } from "./components/RequireAuth";
|
|
import { AboutPage } from "./pages/AboutPage";
|
|
import { HomePage } from "./pages/HomePage";
|
|
import { PacketPage } from "./packet/PacketPage";
|
|
import { NotFoundPage } from "./pages/NotFoundPage";
|
|
import { SignInPage } from "./pages/SignInPage";
|
|
import { AccountPage } from "./screens/account/AccountPage";
|
|
import { ChecklistsPage } from "./screens/checklists/ChecklistsPage";
|
|
import { ProjectPage } from "./screens/clerical/ProjectPage";
|
|
import { UnitPage } from "./screens/clerical/UnitPage";
|
|
import { ItpPage } from "./screens/qc/ItpPage";
|
|
import { QcProjectFolder } from "./screens/qc/QcProjectFolder";
|
|
import { QcUnitFolder } from "./screens/qc/QcUnitFolder";
|
|
import { RequireScreen, ScreenRoute } from "./screens/ScreenRoute";
|
|
import { StampCheckPage } from "./screens/stamp/StampCheckPage";
|
|
|
|
/** Route table. Exported apart from the router so tests can mount it in a MemoryRouter. */
|
|
export function AppRoutes() {
|
|
return (
|
|
<Routes>
|
|
<Route element={<Layout />}>
|
|
<Route index element={<HomePage />} />
|
|
<Route path="signin" element={<SignInPage />} />
|
|
<Route path="about" element={<AboutPage />} />
|
|
<Route element={<RequireAuth />}>
|
|
<Route path="account" element={<AccountPage />} />
|
|
<Route path="checklists" element={<ChecklistsPage />} />
|
|
<Route path="stamp-check" element={<StampCheckPage />} />
|
|
<Route path=":screen" element={<ScreenRoute />} />
|
|
<Route
|
|
path="clerical/projects/:projectId"
|
|
element={
|
|
<RequireScreen screen="clerical">
|
|
<ProjectPage />
|
|
</RequireScreen>
|
|
}
|
|
/>
|
|
<Route
|
|
path="clerical/units/:unitId"
|
|
element={
|
|
<RequireScreen screen="clerical">
|
|
<UnitPage />
|
|
</RequireScreen>
|
|
}
|
|
/>
|
|
<Route
|
|
path="qc/projects/:projectId"
|
|
element={
|
|
<RequireScreen screen="qc">
|
|
<QcProjectFolder />
|
|
</RequireScreen>
|
|
}
|
|
/>
|
|
<Route
|
|
path="qc/units/:unitId"
|
|
element={
|
|
<RequireScreen screen="qc">
|
|
<QcUnitFolder />
|
|
</RequireScreen>
|
|
}
|
|
/>
|
|
<Route
|
|
path="qc/units/:unitId/itp"
|
|
element={
|
|
<RequireScreen screen="qc">
|
|
<ItpPage />
|
|
</RequireScreen>
|
|
}
|
|
/>
|
|
<Route path="packets/:id" element={<PacketPage />} />
|
|
</Route>
|
|
<Route path="*" element={<NotFoundPage />} />
|
|
</Route>
|
|
</Routes>
|
|
);
|
|
}
|
|
|
|
export default function App() {
|
|
return (
|
|
<BrowserRouter>
|
|
<AuthProvider>
|
|
<AppRoutes />
|
|
</AuthProvider>
|
|
</BrowserRouter>
|
|
);
|
|
}
|