diff --git a/frontend/src/components/Sidebar.style.ts b/frontend/src/components/Sidebar.style.ts
new file mode 100644
index 00000000..2af9dfa8
--- /dev/null
+++ b/frontend/src/components/Sidebar.style.ts
@@ -0,0 +1,18 @@
+import { tokens } from "@equinor/eds-tokens";
+import styled from "styled-components";
+
+export const NestedAccordion = styled.div`
+ /* Remove EDS accordion borders so nested groups read as one sidebar section. */
+ & > div {
+ border-bottom: none;
+ }
+
+ [role="region"] {
+ border-bottom: none;
+ }
+
+ /* Indent nested links to keep child pages visually grouped under the parent. */
+ [role="region"] a {
+ padding-left: ${tokens.spacings.comfortable.medium};
+ }
+`;
diff --git a/frontend/src/components/Sidebar.tsx b/frontend/src/components/Sidebar.tsx
index e260a609..f37ff872 100644
--- a/frontend/src/components/Sidebar.tsx
+++ b/frontend/src/components/Sidebar.tsx
@@ -1,14 +1,63 @@
import { SideBar as EdsSideBar } from "@equinor/eds-core-react";
+import type { IconData } from "@equinor/eds-icons";
import { account_circle, dashboard, folder } from "@equinor/eds-icons";
import { Link, useLocation } from "@tanstack/react-router";
import { useProject } from "#services/project";
+import { NestedAccordion } from "./Sidebar.style";
-type AccordianSubItem = {
+// EDS requires an icon for accordion headers; a blank icon keeps nested labels aligned.
+const blankIcon: IconData = {
+ name: "blank",
+ prefix: "eds",
+ height: "24",
+ width: "24",
+ svgPathData: "",
+};
+
+type AccordionSubItem = {
label: string;
to: string;
+ children?: AccordionSubItem[];
};
+function SidebarItem({
+ item,
+ currentPath,
+}: {
+ item: AccordionSubItem;
+ currentPath: string;
+}) {
+ if (item.children) {
+ return (
+
+
+ {item.children.map((child) => (
+
+ ))}
+
+
+ );
+ }
+
+ return (
+
+ );
+}
+
export function Sidebar() {
const project = useProject();
const location = useLocation();
@@ -18,12 +67,28 @@ export function Sidebar() {
const projectExpanded = currentPath.startsWith("/project");
const userExpanded = currentPath.startsWith("/user");
- const ProjectSubItems: AccordianSubItem[] = [];
+ const ProjectSubItems: AccordionSubItem[] = [];
if (project.status) {
- ProjectSubItems.push({ label: "Masterdata", to: "/masterdata" });
- ProjectSubItems.push({ label: "RMS", to: "/rms" });
- ProjectSubItems.push({ label: "Stratigraphy", to: "/stratigraphy" });
- ProjectSubItems.push({ label: "History", to: "/history" });
+ ProjectSubItems.push({ label: "Masterdata", to: "/project/masterdata" });
+ ProjectSubItems.push({
+ label: "RMS",
+ to: "/project/rms",
+ children: [
+ { label: "Overview", to: "/project/rms/overview" },
+ { label: "Stratigraphy", to: "/project/rms/stratigraphy" },
+ { label: "Wellbores", to: "/project/rms/wellbores" },
+ ],
+ });
+ ProjectSubItems.push({
+ label: "Mappings",
+ to: "/project/mappings",
+ children: [
+ { label: "Overview", to: "/project/mappings/overview" },
+ { label: "Stratigraphy", to: "/project/mappings/stratigraphy" },
+ { label: "Wellbores", to: "/project/mappings/wellbores" },
+ ],
+ });
+ ProjectSubItems.push({ label: "History", to: "/project/history" });
}
return (
@@ -49,19 +114,9 @@ export function Sidebar() {
active={currentPath === "/project"}
/>
- {ProjectSubItems.map((item) => {
- const to = `/project${item.to}`;
-
- return (
-
- );
- })}
+ {ProjectSubItems.map((item) => (
+
+ ))}
-
-
- The following is the main RMS project located in the rms/model{" "}
- directory. The version is detected automatically:
-
-
- {rmsData ? (
-
- ) : (
- No RMS project information found in the project.
- )}
-
-
-
-
-
-
-
+
+ The following is the main RMS project located in the rms/model{" "}
+ directory. The version is detected automatically:
+
+
+ {rmsData ? (
+
+ ) : (
+ No RMS project information found in the project.
+ )}
+
+
- >
+
+
+
);
}
diff --git a/frontend/src/components/project/rms/Stratigraphy.tsx b/frontend/src/components/project/rms/Stratigraphy.tsx
index 3ad34740..3b885868 100644
--- a/frontend/src/components/project/rms/Stratigraphy.tsx
+++ b/frontend/src/components/project/rms/Stratigraphy.tsx
@@ -471,8 +471,6 @@ export function Stratigraphy({
return (
<>
- Stratigraphy
-
The following is the model stratigraphy stored in the project, this
can be a subset or the full RMS stratigraphy. It is only the stored
diff --git a/frontend/src/routeTree.gen.ts b/frontend/src/routeTree.gen.ts
index c3a9d025..feefe0aa 100644
--- a/frontend/src/routeTree.gen.ts
+++ b/frontend/src/routeTree.gen.ts
@@ -13,10 +13,18 @@ import { Route as IndexRouteImport } from "./routes/index";
import { Route as ProjectIndexRouteImport } from "./routes/project/index";
import { Route as UserRecoveryRouteImport } from "./routes/user/recovery";
import { Route as UserKeysRouteImport } from "./routes/user/keys";
-import { Route as ProjectStratigraphyRouteImport } from "./routes/project/stratigraphy";
import { Route as ProjectRmsRouteImport } from "./routes/project/rms";
import { Route as ProjectMasterdataRouteImport } from "./routes/project/masterdata";
+import { Route as ProjectMappingsRouteImport } from "./routes/project/mappings";
import { Route as ProjectHistoryRouteImport } from "./routes/project/history";
+import { Route as ProjectRmsIndexRouteImport } from "./routes/project/rms/index";
+import { Route as ProjectMappingsIndexRouteImport } from "./routes/project/mappings/index";
+import { Route as ProjectRmsWellboresRouteImport } from "./routes/project/rms/wellbores";
+import { Route as ProjectRmsStratigraphyRouteImport } from "./routes/project/rms/stratigraphy";
+import { Route as ProjectRmsOverviewRouteImport } from "./routes/project/rms/overview";
+import { Route as ProjectMappingsWellboresRouteImport } from "./routes/project/mappings/wellbores";
+import { Route as ProjectMappingsStratigraphyRouteImport } from "./routes/project/mappings/stratigraphy";
+import { Route as ProjectMappingsOverviewRouteImport } from "./routes/project/mappings/overview";
const IndexRoute = IndexRouteImport.update({
id: "/",
@@ -38,11 +46,6 @@ const UserKeysRoute = UserKeysRouteImport.update({
path: "/user/keys",
getParentRoute: () => rootRouteImport,
} as any);
-const ProjectStratigraphyRoute = ProjectStratigraphyRouteImport.update({
- id: "/project/stratigraphy",
- path: "/project/stratigraphy",
- getParentRoute: () => rootRouteImport,
-} as any);
const ProjectRmsRoute = ProjectRmsRouteImport.update({
id: "/project/rms",
path: "/project/rms",
@@ -53,82 +56,173 @@ const ProjectMasterdataRoute = ProjectMasterdataRouteImport.update({
path: "/project/masterdata",
getParentRoute: () => rootRouteImport,
} as any);
+const ProjectMappingsRoute = ProjectMappingsRouteImport.update({
+ id: "/project/mappings",
+ path: "/project/mappings",
+ getParentRoute: () => rootRouteImport,
+} as any);
const ProjectHistoryRoute = ProjectHistoryRouteImport.update({
id: "/project/history",
path: "/project/history",
getParentRoute: () => rootRouteImport,
} as any);
+const ProjectRmsIndexRoute = ProjectRmsIndexRouteImport.update({
+ id: "/",
+ path: "/",
+ getParentRoute: () => ProjectRmsRoute,
+} as any);
+const ProjectMappingsIndexRoute = ProjectMappingsIndexRouteImport.update({
+ id: "/",
+ path: "/",
+ getParentRoute: () => ProjectMappingsRoute,
+} as any);
+const ProjectRmsWellboresRoute = ProjectRmsWellboresRouteImport.update({
+ id: "/wellbores",
+ path: "/wellbores",
+ getParentRoute: () => ProjectRmsRoute,
+} as any);
+const ProjectRmsStratigraphyRoute = ProjectRmsStratigraphyRouteImport.update({
+ id: "/stratigraphy",
+ path: "/stratigraphy",
+ getParentRoute: () => ProjectRmsRoute,
+} as any);
+const ProjectRmsOverviewRoute = ProjectRmsOverviewRouteImport.update({
+ id: "/overview",
+ path: "/overview",
+ getParentRoute: () => ProjectRmsRoute,
+} as any);
+const ProjectMappingsWellboresRoute =
+ ProjectMappingsWellboresRouteImport.update({
+ id: "/wellbores",
+ path: "/wellbores",
+ getParentRoute: () => ProjectMappingsRoute,
+ } as any);
+const ProjectMappingsStratigraphyRoute =
+ ProjectMappingsStratigraphyRouteImport.update({
+ id: "/stratigraphy",
+ path: "/stratigraphy",
+ getParentRoute: () => ProjectMappingsRoute,
+ } as any);
+const ProjectMappingsOverviewRoute = ProjectMappingsOverviewRouteImport.update({
+ id: "/overview",
+ path: "/overview",
+ getParentRoute: () => ProjectMappingsRoute,
+} as any);
export interface FileRoutesByFullPath {
"/": typeof IndexRoute;
"/project/history": typeof ProjectHistoryRoute;
+ "/project/mappings": typeof ProjectMappingsRouteWithChildren;
"/project/masterdata": typeof ProjectMasterdataRoute;
- "/project/rms": typeof ProjectRmsRoute;
- "/project/stratigraphy": typeof ProjectStratigraphyRoute;
+ "/project/rms": typeof ProjectRmsRouteWithChildren;
"/user/keys": typeof UserKeysRoute;
"/user/recovery": typeof UserRecoveryRoute;
"/project/": typeof ProjectIndexRoute;
+ "/project/mappings/overview": typeof ProjectMappingsOverviewRoute;
+ "/project/mappings/stratigraphy": typeof ProjectMappingsStratigraphyRoute;
+ "/project/mappings/wellbores": typeof ProjectMappingsWellboresRoute;
+ "/project/rms/overview": typeof ProjectRmsOverviewRoute;
+ "/project/rms/stratigraphy": typeof ProjectRmsStratigraphyRoute;
+ "/project/rms/wellbores": typeof ProjectRmsWellboresRoute;
+ "/project/mappings/": typeof ProjectMappingsIndexRoute;
+ "/project/rms/": typeof ProjectRmsIndexRoute;
}
export interface FileRoutesByTo {
"/": typeof IndexRoute;
"/project/history": typeof ProjectHistoryRoute;
"/project/masterdata": typeof ProjectMasterdataRoute;
- "/project/rms": typeof ProjectRmsRoute;
- "/project/stratigraphy": typeof ProjectStratigraphyRoute;
"/user/keys": typeof UserKeysRoute;
"/user/recovery": typeof UserRecoveryRoute;
"/project": typeof ProjectIndexRoute;
+ "/project/mappings/overview": typeof ProjectMappingsOverviewRoute;
+ "/project/mappings/stratigraphy": typeof ProjectMappingsStratigraphyRoute;
+ "/project/mappings/wellbores": typeof ProjectMappingsWellboresRoute;
+ "/project/rms/overview": typeof ProjectRmsOverviewRoute;
+ "/project/rms/stratigraphy": typeof ProjectRmsStratigraphyRoute;
+ "/project/rms/wellbores": typeof ProjectRmsWellboresRoute;
+ "/project/mappings": typeof ProjectMappingsIndexRoute;
+ "/project/rms": typeof ProjectRmsIndexRoute;
}
export interface FileRoutesById {
__root__: typeof rootRouteImport;
"/": typeof IndexRoute;
"/project/history": typeof ProjectHistoryRoute;
+ "/project/mappings": typeof ProjectMappingsRouteWithChildren;
"/project/masterdata": typeof ProjectMasterdataRoute;
- "/project/rms": typeof ProjectRmsRoute;
- "/project/stratigraphy": typeof ProjectStratigraphyRoute;
+ "/project/rms": typeof ProjectRmsRouteWithChildren;
"/user/keys": typeof UserKeysRoute;
"/user/recovery": typeof UserRecoveryRoute;
"/project/": typeof ProjectIndexRoute;
+ "/project/mappings/overview": typeof ProjectMappingsOverviewRoute;
+ "/project/mappings/stratigraphy": typeof ProjectMappingsStratigraphyRoute;
+ "/project/mappings/wellbores": typeof ProjectMappingsWellboresRoute;
+ "/project/rms/overview": typeof ProjectRmsOverviewRoute;
+ "/project/rms/stratigraphy": typeof ProjectRmsStratigraphyRoute;
+ "/project/rms/wellbores": typeof ProjectRmsWellboresRoute;
+ "/project/mappings/": typeof ProjectMappingsIndexRoute;
+ "/project/rms/": typeof ProjectRmsIndexRoute;
}
export interface FileRouteTypes {
fileRoutesByFullPath: FileRoutesByFullPath;
fullPaths:
| "/"
| "/project/history"
+ | "/project/mappings"
| "/project/masterdata"
| "/project/rms"
- | "/project/stratigraphy"
| "/user/keys"
| "/user/recovery"
- | "/project/";
+ | "/project/"
+ | "/project/mappings/overview"
+ | "/project/mappings/stratigraphy"
+ | "/project/mappings/wellbores"
+ | "/project/rms/overview"
+ | "/project/rms/stratigraphy"
+ | "/project/rms/wellbores"
+ | "/project/mappings/"
+ | "/project/rms/";
fileRoutesByTo: FileRoutesByTo;
to:
| "/"
| "/project/history"
| "/project/masterdata"
- | "/project/rms"
- | "/project/stratigraphy"
| "/user/keys"
| "/user/recovery"
- | "/project";
+ | "/project"
+ | "/project/mappings/overview"
+ | "/project/mappings/stratigraphy"
+ | "/project/mappings/wellbores"
+ | "/project/rms/overview"
+ | "/project/rms/stratigraphy"
+ | "/project/rms/wellbores"
+ | "/project/mappings"
+ | "/project/rms";
id:
| "__root__"
| "/"
| "/project/history"
+ | "/project/mappings"
| "/project/masterdata"
| "/project/rms"
- | "/project/stratigraphy"
| "/user/keys"
| "/user/recovery"
- | "/project/";
+ | "/project/"
+ | "/project/mappings/overview"
+ | "/project/mappings/stratigraphy"
+ | "/project/mappings/wellbores"
+ | "/project/rms/overview"
+ | "/project/rms/stratigraphy"
+ | "/project/rms/wellbores"
+ | "/project/mappings/"
+ | "/project/rms/";
fileRoutesById: FileRoutesById;
}
export interface RootRouteChildren {
IndexRoute: typeof IndexRoute;
ProjectHistoryRoute: typeof ProjectHistoryRoute;
+ ProjectMappingsRoute: typeof ProjectMappingsRouteWithChildren;
ProjectMasterdataRoute: typeof ProjectMasterdataRoute;
- ProjectRmsRoute: typeof ProjectRmsRoute;
- ProjectStratigraphyRoute: typeof ProjectStratigraphyRoute;
+ ProjectRmsRoute: typeof ProjectRmsRouteWithChildren;
UserKeysRoute: typeof UserKeysRoute;
UserRecoveryRoute: typeof UserRecoveryRoute;
ProjectIndexRoute: typeof ProjectIndexRoute;
@@ -164,13 +258,6 @@ declare module "@tanstack/react-router" {
preLoaderRoute: typeof UserKeysRouteImport;
parentRoute: typeof rootRouteImport;
};
- "/project/stratigraphy": {
- id: "/project/stratigraphy";
- path: "/project/stratigraphy";
- fullPath: "/project/stratigraphy";
- preLoaderRoute: typeof ProjectStratigraphyRouteImport;
- parentRoute: typeof rootRouteImport;
- };
"/project/rms": {
id: "/project/rms";
path: "/project/rms";
@@ -185,6 +272,13 @@ declare module "@tanstack/react-router" {
preLoaderRoute: typeof ProjectMasterdataRouteImport;
parentRoute: typeof rootRouteImport;
};
+ "/project/mappings": {
+ id: "/project/mappings";
+ path: "/project/mappings";
+ fullPath: "/project/mappings";
+ preLoaderRoute: typeof ProjectMappingsRouteImport;
+ parentRoute: typeof rootRouteImport;
+ };
"/project/history": {
id: "/project/history";
path: "/project/history";
@@ -192,15 +286,107 @@ declare module "@tanstack/react-router" {
preLoaderRoute: typeof ProjectHistoryRouteImport;
parentRoute: typeof rootRouteImport;
};
+ "/project/rms/": {
+ id: "/project/rms/";
+ path: "/";
+ fullPath: "/project/rms/";
+ preLoaderRoute: typeof ProjectRmsIndexRouteImport;
+ parentRoute: typeof ProjectRmsRoute;
+ };
+ "/project/mappings/": {
+ id: "/project/mappings/";
+ path: "/";
+ fullPath: "/project/mappings/";
+ preLoaderRoute: typeof ProjectMappingsIndexRouteImport;
+ parentRoute: typeof ProjectMappingsRoute;
+ };
+ "/project/rms/wellbores": {
+ id: "/project/rms/wellbores";
+ path: "/wellbores";
+ fullPath: "/project/rms/wellbores";
+ preLoaderRoute: typeof ProjectRmsWellboresRouteImport;
+ parentRoute: typeof ProjectRmsRoute;
+ };
+ "/project/rms/stratigraphy": {
+ id: "/project/rms/stratigraphy";
+ path: "/stratigraphy";
+ fullPath: "/project/rms/stratigraphy";
+ preLoaderRoute: typeof ProjectRmsStratigraphyRouteImport;
+ parentRoute: typeof ProjectRmsRoute;
+ };
+ "/project/rms/overview": {
+ id: "/project/rms/overview";
+ path: "/overview";
+ fullPath: "/project/rms/overview";
+ preLoaderRoute: typeof ProjectRmsOverviewRouteImport;
+ parentRoute: typeof ProjectRmsRoute;
+ };
+ "/project/mappings/wellbores": {
+ id: "/project/mappings/wellbores";
+ path: "/wellbores";
+ fullPath: "/project/mappings/wellbores";
+ preLoaderRoute: typeof ProjectMappingsWellboresRouteImport;
+ parentRoute: typeof ProjectMappingsRoute;
+ };
+ "/project/mappings/stratigraphy": {
+ id: "/project/mappings/stratigraphy";
+ path: "/stratigraphy";
+ fullPath: "/project/mappings/stratigraphy";
+ preLoaderRoute: typeof ProjectMappingsStratigraphyRouteImport;
+ parentRoute: typeof ProjectMappingsRoute;
+ };
+ "/project/mappings/overview": {
+ id: "/project/mappings/overview";
+ path: "/overview";
+ fullPath: "/project/mappings/overview";
+ preLoaderRoute: typeof ProjectMappingsOverviewRouteImport;
+ parentRoute: typeof ProjectMappingsRoute;
+ };
}
}
+interface ProjectMappingsRouteChildren {
+ ProjectMappingsOverviewRoute: typeof ProjectMappingsOverviewRoute;
+ ProjectMappingsStratigraphyRoute: typeof ProjectMappingsStratigraphyRoute;
+ ProjectMappingsWellboresRoute: typeof ProjectMappingsWellboresRoute;
+ ProjectMappingsIndexRoute: typeof ProjectMappingsIndexRoute;
+}
+
+const ProjectMappingsRouteChildren: ProjectMappingsRouteChildren = {
+ ProjectMappingsOverviewRoute: ProjectMappingsOverviewRoute,
+ ProjectMappingsStratigraphyRoute: ProjectMappingsStratigraphyRoute,
+ ProjectMappingsWellboresRoute: ProjectMappingsWellboresRoute,
+ ProjectMappingsIndexRoute: ProjectMappingsIndexRoute,
+};
+
+const ProjectMappingsRouteWithChildren = ProjectMappingsRoute._addFileChildren(
+ ProjectMappingsRouteChildren,
+);
+
+interface ProjectRmsRouteChildren {
+ ProjectRmsOverviewRoute: typeof ProjectRmsOverviewRoute;
+ ProjectRmsStratigraphyRoute: typeof ProjectRmsStratigraphyRoute;
+ ProjectRmsWellboresRoute: typeof ProjectRmsWellboresRoute;
+ ProjectRmsIndexRoute: typeof ProjectRmsIndexRoute;
+}
+
+const ProjectRmsRouteChildren: ProjectRmsRouteChildren = {
+ ProjectRmsOverviewRoute: ProjectRmsOverviewRoute,
+ ProjectRmsStratigraphyRoute: ProjectRmsStratigraphyRoute,
+ ProjectRmsWellboresRoute: ProjectRmsWellboresRoute,
+ ProjectRmsIndexRoute: ProjectRmsIndexRoute,
+};
+
+const ProjectRmsRouteWithChildren = ProjectRmsRoute._addFileChildren(
+ ProjectRmsRouteChildren,
+);
+
const rootRouteChildren: RootRouteChildren = {
IndexRoute: IndexRoute,
ProjectHistoryRoute: ProjectHistoryRoute,
+ ProjectMappingsRoute: ProjectMappingsRouteWithChildren,
ProjectMasterdataRoute: ProjectMasterdataRoute,
- ProjectRmsRoute: ProjectRmsRoute,
- ProjectStratigraphyRoute: ProjectStratigraphyRoute,
+ ProjectRmsRoute: ProjectRmsRouteWithChildren,
UserKeysRoute: UserKeysRoute,
UserRecoveryRoute: UserRecoveryRoute,
ProjectIndexRoute: ProjectIndexRoute,
diff --git a/frontend/src/routes/project/mappings.tsx b/frontend/src/routes/project/mappings.tsx
new file mode 100644
index 00000000..f6e896e4
--- /dev/null
+++ b/frontend/src/routes/project/mappings.tsx
@@ -0,0 +1,9 @@
+import { createFileRoute, Outlet } from "@tanstack/react-router";
+
+export const Route = createFileRoute("/project/mappings")({
+ component: RouteComponent,
+});
+
+function RouteComponent() {
+ return ;
+}
diff --git a/frontend/src/routes/project/mappings/index.tsx b/frontend/src/routes/project/mappings/index.tsx
new file mode 100644
index 00000000..ed597d3c
--- /dev/null
+++ b/frontend/src/routes/project/mappings/index.tsx
@@ -0,0 +1,5 @@
+import { createFileRoute, Navigate } from "@tanstack/react-router";
+
+export const Route = createFileRoute("/project/mappings/")({
+ component: () => ,
+});
diff --git a/frontend/src/routes/project/mappings/overview.tsx b/frontend/src/routes/project/mappings/overview.tsx
new file mode 100644
index 00000000..da908539
--- /dev/null
+++ b/frontend/src/routes/project/mappings/overview.tsx
@@ -0,0 +1,27 @@
+import { createFileRoute } from "@tanstack/react-router";
+
+import { useProject } from "#services/project";
+import {
+ PageHeader,
+ PageSectionWidthConstrained,
+ PageText,
+} from "#styles/common";
+
+export const Route = createFileRoute("/project/mappings/overview")({
+ component: RouteComponent,
+});
+
+function RouteComponent() {
+ const project = useProject();
+
+ return (
+
+ Overview
+
+ {project.status
+ ? "Mappings overview is coming soon."
+ : "Project not set."}
+
+
+ );
+}
diff --git a/frontend/src/routes/project/stratigraphy.tsx b/frontend/src/routes/project/mappings/stratigraphy.tsx
similarity index 97%
rename from frontend/src/routes/project/stratigraphy.tsx
rename to frontend/src/routes/project/mappings/stratigraphy.tsx
index bb013d93..55ffb97a 100644
--- a/frontend/src/routes/project/stratigraphy.tsx
+++ b/frontend/src/routes/project/mappings/stratigraphy.tsx
@@ -18,7 +18,7 @@ import {
setStorageItem,
} from "#utils/storage";
-export const Route = createFileRoute("/project/stratigraphy")({
+export const Route = createFileRoute("/project/mappings/stratigraphy")({
component: RouteComponent,
});
diff --git a/frontend/src/routes/project/mappings/wellbores.tsx b/frontend/src/routes/project/mappings/wellbores.tsx
new file mode 100644
index 00000000..4d42b306
--- /dev/null
+++ b/frontend/src/routes/project/mappings/wellbores.tsx
@@ -0,0 +1,27 @@
+import { createFileRoute } from "@tanstack/react-router";
+
+import { useProject } from "#services/project";
+import {
+ PageHeader,
+ PageSectionWidthConstrained,
+ PageText,
+} from "#styles/common";
+
+export const Route = createFileRoute("/project/mappings/wellbores")({
+ component: RouteComponent,
+});
+
+function RouteComponent() {
+ const project = useProject();
+
+ return (
+
+ Wellbores
+
+ {project.status
+ ? "Wellbore mappings are coming soon."
+ : "Project not set."}
+
+
+ );
+}
diff --git a/frontend/src/routes/project/rms.tsx b/frontend/src/routes/project/rms.tsx
index 1aa44ae6..2101bde8 100644
--- a/frontend/src/routes/project/rms.tsx
+++ b/frontend/src/routes/project/rms.tsx
@@ -1,46 +1,9 @@
-import { createFileRoute } from "@tanstack/react-router";
-import { Suspense } from "react";
-
-import { Loading } from "#components/common";
-import { Overview } from "#components/project/rms/Overview";
-import { useProject } from "#services/project";
-import {
- PageContainerNotWidthConstrained,
- PageHeader,
- PageSectionWidthConstrained,
- PageText,
-} from "#styles/common";
+import { createFileRoute, Outlet } from "@tanstack/react-router";
export const Route = createFileRoute("/project/rms")({
component: RouteComponent,
});
-function Content() {
- const project = useProject();
-
- return project.status && project.data ? (
-
- ) : (
-
- Project not set.
-
- );
-}
-
function RouteComponent() {
- return (
-
-
- RMS
-
-
- }>
-
-
-
- );
+ return ;
}
diff --git a/frontend/src/routes/project/rms/index.tsx b/frontend/src/routes/project/rms/index.tsx
new file mode 100644
index 00000000..581fadb8
--- /dev/null
+++ b/frontend/src/routes/project/rms/index.tsx
@@ -0,0 +1,5 @@
+import { createFileRoute, Navigate } from "@tanstack/react-router";
+
+export const Route = createFileRoute("/project/rms/")({
+ component: () => ,
+});
diff --git a/frontend/src/routes/project/rms/overview.tsx b/frontend/src/routes/project/rms/overview.tsx
new file mode 100644
index 00000000..b39e819c
--- /dev/null
+++ b/frontend/src/routes/project/rms/overview.tsx
@@ -0,0 +1,45 @@
+import { createFileRoute } from "@tanstack/react-router";
+import { Suspense } from "react";
+
+import { Loading } from "#components/common";
+import { Overview } from "#components/project/rms/Overview";
+import { useProject } from "#services/project";
+import {
+ PageHeader,
+ PageSectionWidthConstrained,
+ PageText,
+} from "#styles/common";
+
+export const Route = createFileRoute("/project/rms/overview")({
+ component: RouteComponent,
+});
+
+function Content() {
+ const project = useProject();
+
+ return project.status && project.data ? (
+
+ ) : (
+
+ Project not set.
+
+ );
+}
+
+function RouteComponent() {
+ return (
+ <>
+
+ Overview
+
+
+ }>
+
+
+ >
+ );
+}
diff --git a/frontend/src/routes/project/rms/stratigraphy.tsx b/frontend/src/routes/project/rms/stratigraphy.tsx
new file mode 100644
index 00000000..db9660e6
--- /dev/null
+++ b/frontend/src/routes/project/rms/stratigraphy.tsx
@@ -0,0 +1,46 @@
+import { createFileRoute } from "@tanstack/react-router";
+import { Suspense } from "react";
+
+import { Loading } from "#components/common";
+import { Stratigraphy } from "#components/project/rms/Stratigraphy";
+import { useProject } from "#services/project";
+import {
+ PageContainerNotWidthConstrained,
+ PageHeader,
+ PageSectionWidthConstrained,
+ PageText,
+} from "#styles/common";
+
+export const Route = createFileRoute("/project/rms/stratigraphy")({
+ component: RouteComponent,
+});
+
+function Content() {
+ const project = useProject();
+
+ return project.status && project.data ? (
+
+ ) : (
+
+ Project not set.
+
+ );
+}
+
+function RouteComponent() {
+ return (
+
+
+ Stratigraphy
+
+
+ }>
+
+
+
+ );
+}
diff --git a/frontend/src/routes/project/rms/wellbores.tsx b/frontend/src/routes/project/rms/wellbores.tsx
new file mode 100644
index 00000000..6b9e5552
--- /dev/null
+++ b/frontend/src/routes/project/rms/wellbores.tsx
@@ -0,0 +1,27 @@
+import { createFileRoute } from "@tanstack/react-router";
+
+import { useProject } from "#services/project";
+import {
+ PageHeader,
+ PageSectionWidthConstrained,
+ PageText,
+} from "#styles/common";
+
+export const Route = createFileRoute("/project/rms/wellbores")({
+ component: RouteComponent,
+});
+
+function RouteComponent() {
+ const project = useProject();
+
+ return (
+
+ Wellbores
+
+ {project.status
+ ? "Wellbore content is coming soon."
+ : "Project not set."}
+
+
+ );
+}
diff --git a/frontend/src/services/tasks.ts b/frontend/src/services/tasks.ts
index c571c8ca..468b82b2 100644
--- a/frontend/src/services/tasks.ts
+++ b/frontend/src/services/tasks.ts
@@ -51,9 +51,15 @@ export function useTaskList(): Task[] {
},
{
id: "rms",
- label: "Set RMS project and stratigraphy",
- done: !!config.rms?.path && (zones.length > 0 || horizons.length > 0),
- to: "/project/rms",
+ label: "Set RMS project",
+ done: !!config.rms?.path,
+ to: "/project/rms/overview",
+ },
+ {
+ id: "rms-stratigraphy",
+ label: "Set RMS stratigraphy",
+ done: zones.length > 0 || horizons.length > 0,
+ to: "/project/rms/stratigraphy",
},
{
id: "mappings",
@@ -61,7 +67,7 @@ export function useTaskList(): Task[] {
done:
(zones.length > 0 || horizons.length > 0) &&
[...zones, ...horizons].every((item) => mappedRmsIds.has(item.name)),
- to: "/project/stratigraphy",
+ to: "/project/mappings/stratigraphy",
},
];
}