Replace console frontend with unified findings pages
Add FindingsPage, FindingDetailsPage, and CreateFindingDialog supporting all finding kinds (nonconformity, observation, exception) with filtering, sorting, and audit linking. Remove the separate nonconformity and continual improvement pages, routes, and graph hooks. Update sidebar navigation, routes, and components for nullable audit framework field. Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
@@ -1,97 +0,0 @@
|
||||
import { lazy } from "@probo/react-lazy";
|
||||
import {
|
||||
type AppRoute,
|
||||
loaderFromQueryLoader,
|
||||
withQueryRef,
|
||||
} from "@probo/routes";
|
||||
import { loadQuery } from "react-relay";
|
||||
|
||||
import type { ContinualImprovementGraphListQuery } from "#/__generated__/core/ContinualImprovementGraphListQuery.graphql";
|
||||
import type { ContinualImprovementGraphNodeQuery } from "#/__generated__/core/ContinualImprovementGraphNodeQuery.graphql";
|
||||
import { PageSkeleton } from "#/components/skeletons/PageSkeleton";
|
||||
import { coreEnvironment } from "#/environments";
|
||||
import {
|
||||
continualImprovementNodeQuery,
|
||||
continualImprovementsQuery,
|
||||
} from "#/hooks/graph/ContinualImprovementGraph";
|
||||
|
||||
export const continualImprovementRoutes = [
|
||||
{
|
||||
path: "continual-improvements",
|
||||
Fallback: PageSkeleton,
|
||||
loader: loaderFromQueryLoader(({ organizationId }) =>
|
||||
loadQuery<ContinualImprovementGraphListQuery>(
|
||||
coreEnvironment,
|
||||
continualImprovementsQuery,
|
||||
{
|
||||
organizationId,
|
||||
snapshotId: null,
|
||||
},
|
||||
),
|
||||
),
|
||||
Component: withQueryRef(
|
||||
lazy(
|
||||
() =>
|
||||
import("#/pages/organizations/continualImprovements/ContinualImprovementsPage"),
|
||||
),
|
||||
),
|
||||
},
|
||||
{
|
||||
path: "snapshots/:snapshotId/continual-improvements",
|
||||
Fallback: PageSkeleton,
|
||||
loader: loaderFromQueryLoader(({ organizationId, snapshotId }) =>
|
||||
loadQuery<ContinualImprovementGraphListQuery>(
|
||||
coreEnvironment,
|
||||
continualImprovementsQuery,
|
||||
{
|
||||
organizationId,
|
||||
snapshotId,
|
||||
},
|
||||
),
|
||||
),
|
||||
Component: withQueryRef(
|
||||
lazy(
|
||||
() =>
|
||||
import("#/pages/organizations/continualImprovements/ContinualImprovementsPage"),
|
||||
),
|
||||
),
|
||||
},
|
||||
{
|
||||
path: "continual-improvements/:improvementId",
|
||||
Fallback: PageSkeleton,
|
||||
loader: loaderFromQueryLoader(({ improvementId }) =>
|
||||
loadQuery<ContinualImprovementGraphNodeQuery>(
|
||||
coreEnvironment,
|
||||
continualImprovementNodeQuery,
|
||||
{
|
||||
continualImprovementId: improvementId,
|
||||
},
|
||||
),
|
||||
),
|
||||
Component: withQueryRef(
|
||||
lazy(
|
||||
() =>
|
||||
import("#/pages/organizations/continualImprovements/ContinualImprovementDetailsPage"),
|
||||
),
|
||||
),
|
||||
},
|
||||
{
|
||||
path: "snapshots/:snapshotId/continual-improvements/:improvementId",
|
||||
Fallback: PageSkeleton,
|
||||
loader: loaderFromQueryLoader(({ improvementId }) =>
|
||||
loadQuery<ContinualImprovementGraphNodeQuery>(
|
||||
coreEnvironment,
|
||||
continualImprovementNodeQuery,
|
||||
{
|
||||
continualImprovementId: improvementId,
|
||||
},
|
||||
),
|
||||
),
|
||||
Component: withQueryRef(
|
||||
lazy(
|
||||
() =>
|
||||
import("#/pages/organizations/continualImprovements/ContinualImprovementDetailsPage"),
|
||||
),
|
||||
),
|
||||
},
|
||||
] satisfies AppRoute[];
|
||||
39
apps/console/src/routes/findingRoutes.ts
Normal file
39
apps/console/src/routes/findingRoutes.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import { lazy } from "@probo/react-lazy";
|
||||
import type { AppRoute } from "@probo/routes";
|
||||
|
||||
import { PageSkeleton } from "#/components/skeletons/PageSkeleton";
|
||||
|
||||
export const findingRoutes = [
|
||||
{
|
||||
path: "findings",
|
||||
Fallback: PageSkeleton,
|
||||
Component: lazy(
|
||||
() =>
|
||||
import("#/pages/organizations/findings/FindingsPageLoader"),
|
||||
),
|
||||
},
|
||||
{
|
||||
path: "snapshots/:snapshotId/findings",
|
||||
Fallback: PageSkeleton,
|
||||
Component: lazy(
|
||||
() =>
|
||||
import("#/pages/organizations/findings/FindingsPageLoader"),
|
||||
),
|
||||
},
|
||||
{
|
||||
path: "findings/:findingId",
|
||||
Fallback: PageSkeleton,
|
||||
Component: lazy(
|
||||
() =>
|
||||
import("#/pages/organizations/findings/FindingDetailsPageLoader"),
|
||||
),
|
||||
},
|
||||
{
|
||||
path: "snapshots/:snapshotId/findings/:findingId",
|
||||
Fallback: PageSkeleton,
|
||||
Component: lazy(
|
||||
() =>
|
||||
import("#/pages/organizations/findings/FindingDetailsPageLoader"),
|
||||
),
|
||||
},
|
||||
] satisfies AppRoute[];
|
||||
@@ -1,98 +0,0 @@
|
||||
import { lazy } from "@probo/react-lazy";
|
||||
import {
|
||||
type AppRoute,
|
||||
loaderFromQueryLoader,
|
||||
withQueryRef,
|
||||
} from "@probo/routes";
|
||||
import { loadQuery } from "react-relay";
|
||||
|
||||
import type { NonconformityGraphListQuery } from "#/__generated__/core/NonconformityGraphListQuery.graphql";
|
||||
import type { NonconformityGraphNodeQuery } from "#/__generated__/core/NonconformityGraphNodeQuery.graphql";
|
||||
import { PageSkeleton } from "#/components/skeletons/PageSkeleton";
|
||||
import { coreEnvironment } from "#/environments";
|
||||
|
||||
import {
|
||||
nonconformitiesQuery,
|
||||
nonconformityNodeQuery,
|
||||
} from "../hooks/graph/NonconformityGraph";
|
||||
|
||||
export const nonconformityRoutes = [
|
||||
{
|
||||
path: "nonconformities",
|
||||
Fallback: PageSkeleton,
|
||||
loader: loaderFromQueryLoader(({ organizationId }) =>
|
||||
loadQuery<NonconformityGraphListQuery>(
|
||||
coreEnvironment,
|
||||
nonconformitiesQuery,
|
||||
{
|
||||
organizationId,
|
||||
snapshotId: null,
|
||||
},
|
||||
),
|
||||
),
|
||||
Component: withQueryRef(
|
||||
lazy(
|
||||
() =>
|
||||
import("../pages/organizations/nonconformities/NonconformitiesPage"),
|
||||
),
|
||||
),
|
||||
},
|
||||
{
|
||||
path: "snapshots/:snapshotId/nonconformities",
|
||||
Fallback: PageSkeleton,
|
||||
loader: loaderFromQueryLoader(({ organizationId, snapshotId }) =>
|
||||
loadQuery<NonconformityGraphListQuery>(
|
||||
coreEnvironment,
|
||||
nonconformitiesQuery,
|
||||
{
|
||||
organizationId,
|
||||
snapshotId,
|
||||
},
|
||||
),
|
||||
),
|
||||
Component: withQueryRef(
|
||||
lazy(
|
||||
() =>
|
||||
import("../pages/organizations/nonconformities/NonconformitiesPage"),
|
||||
),
|
||||
),
|
||||
},
|
||||
{
|
||||
path: "nonconformities/:nonconformityId",
|
||||
Fallback: PageSkeleton,
|
||||
loader: loaderFromQueryLoader(({ nonconformityId }) =>
|
||||
loadQuery<NonconformityGraphNodeQuery>(
|
||||
coreEnvironment,
|
||||
nonconformityNodeQuery,
|
||||
{
|
||||
nonconformityId,
|
||||
},
|
||||
),
|
||||
),
|
||||
Component: withQueryRef(
|
||||
lazy(
|
||||
() =>
|
||||
import("../pages/organizations/nonconformities/NonconformityDetailsPage"),
|
||||
),
|
||||
),
|
||||
},
|
||||
{
|
||||
path: "snapshots/:snapshotId/nonconformities/:nonconformityId",
|
||||
Fallback: PageSkeleton,
|
||||
loader: loaderFromQueryLoader(({ nonconformityId }) =>
|
||||
loadQuery<NonconformityGraphNodeQuery>(
|
||||
coreEnvironment,
|
||||
nonconformityNodeQuery,
|
||||
{
|
||||
nonconformityId: nonconformityId,
|
||||
},
|
||||
),
|
||||
),
|
||||
Component: withQueryRef(
|
||||
lazy(
|
||||
() =>
|
||||
import("../pages/organizations/nonconformities/NonconformityDetailsPage"),
|
||||
),
|
||||
),
|
||||
},
|
||||
] satisfies AppRoute[];
|
||||
Reference in New Issue
Block a user