From d752b4a3b062aae6e6834566dd2e3cbda9c34944 Mon Sep 17 00:00:00 2001
From: Takeshi Kimata <117462761+kimatata@users.noreply.github.com>
Date: Sat, 17 Feb 2024 22:12:08 +0900
Subject: [PATCH] folders and cases
---
.../[folderId]/cases/[caseId]/page.tsx | 18 +++++
.../folders/[folderId]/cases/page.tsx | 69 +++++++++++++++++++
.../folders/layout.tsx} | 44 ++++++++----
.../app/projects/[projectId]/folders/page.tsx | 9 +++
.../{[id] => [projectId]}/home/page.tsx | 0
.../projects/{[id] => [projectId]}/layout.tsx | 0
.../{[id] => [projectId]}/runs/page.tsx | 0
.../{[id] => [projectId]}/sidebar.tsx | 0
8 files changed, 126 insertions(+), 14 deletions(-)
create mode 100644 frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/page.tsx
create mode 100644 frontend/app/projects/[projectId]/folders/[folderId]/cases/page.tsx
rename frontend/app/projects/{[id]/folders/page.tsx => [projectId]/folders/layout.tsx} (55%)
create mode 100644 frontend/app/projects/[projectId]/folders/page.tsx
rename frontend/app/projects/{[id] => [projectId]}/home/page.tsx (100%)
rename frontend/app/projects/{[id] => [projectId]}/layout.tsx (100%)
rename frontend/app/projects/{[id] => [projectId]}/runs/page.tsx (100%)
rename frontend/app/projects/{[id] => [projectId]}/sidebar.tsx (100%)
diff --git a/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/page.tsx b/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/page.tsx
new file mode 100644
index 0000000..cfda8e9
--- /dev/null
+++ b/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/page.tsx
@@ -0,0 +1,18 @@
+"use client";
+import { Button } from "@nextui-org/react";
+import { useRouter } from "next/navigation";
+
+export default function Page() {
+ const router = useRouter();
+ return (
+ <>
+ router.push(`/projects/1/folders/1/cases/`)}
+ >
+ Back
+
+
This is each test case
+ >
+ );
+}
diff --git a/frontend/app/projects/[projectId]/folders/[folderId]/cases/page.tsx b/frontend/app/projects/[projectId]/folders/[folderId]/cases/page.tsx
new file mode 100644
index 0000000..79228c4
--- /dev/null
+++ b/frontend/app/projects/[projectId]/folders/[folderId]/cases/page.tsx
@@ -0,0 +1,69 @@
+"use client";
+import { useEffect, useState } from "react";
+import Config from "@/config/config";
+const apiServer = Config.apiServer;
+import { Listbox, ListboxItem } from "@nextui-org/react";
+import { useRouter } from "next/navigation";
+
+/**
+ * fetch folder records
+ *
+ * @param {string} url - API endpoint url
+ * @returns {Promise} - project record array
+ * @throws {Error}
+ */
+async function fetchCases(url) {
+ try {
+ const response = await fetch(url, {
+ method: "GET",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ });
+
+ if (!response.ok) {
+ throw new Error(`HTTP error! Status: ${response.status}`);
+ }
+
+ const data = await response.json();
+ return data;
+ } catch (error) {
+ console.error("Error fetching data:", error.message);
+ }
+}
+
+export default function Page({ params }: { params: { folderId: string } }) {
+ const router = useRouter();
+ const [cases, setCases] = useState([]);
+ const url = `${apiServer}/cases?folderId=${params.folderId}`;
+
+ useEffect(() => {
+ async function fetchDataEffect() {
+ try {
+ const data = await fetchCases(url);
+ setCases(data);
+ } catch (error) {
+ console.error("Error in effect:", error.message);
+ }
+ }
+
+ fetchDataEffect();
+ }, []);
+
+ return (
+
+ {cases.map((testCase, index) => (
+
+ router.push(
+ `/projects/1/folders/${params.folderId}/cases/${testCase.id}`
+ )
+ }
+ >
+ {testCase.title}
+
+ ))}
+
+ );
+}
diff --git a/frontend/app/projects/[id]/folders/page.tsx b/frontend/app/projects/[projectId]/folders/layout.tsx
similarity index 55%
rename from frontend/app/projects/[id]/folders/page.tsx
rename to frontend/app/projects/[projectId]/folders/layout.tsx
index dbdbc06..0845b4a 100644
--- a/frontend/app/projects/[id]/folders/page.tsx
+++ b/frontend/app/projects/[projectId]/folders/layout.tsx
@@ -4,6 +4,7 @@ import Config from "@/config/config";
const apiServer = Config.apiServer;
import { Listbox, ListboxItem } from "@nextui-org/react";
import { FolderIcon } from "@/components/icons";
+import { useRouter } from "next/navigation";
/**
* fetch folder records
@@ -32,9 +33,15 @@ async function fetchFolders(url) {
}
}
-export default function Page({ params }: { params: { id: string } }) {
+export default function ProjectsLayout({
+ children,
+ params,
+}: {
+ children: React.ReactNode;
+ params: { projectId: string };
+}) {
const [folders, setFolders] = useState([]);
- const url = `${apiServer}/folders?projectId=${params.id}`;
+ const url = `${apiServer}/folders?projectId=${params.projectId}`;
useEffect(() => {
async function fetchDataEffect() {
@@ -49,20 +56,29 @@ export default function Page({ params }: { params: { id: string } }) {
fetchDataEffect();
}, []);
+ const router = useRouter();
return (
-
-
- {folders.map((folder, index) => (
- }
- >
- {folder.name}
- {/* {folder.detail}
+
+
+
+ {folders.map((folder, index) => (
+
+ router.push(
+ `/projects/${params.projectId}/folders/${folder.id}/cases`
+ )
+ }
+ startContent={ }
+ >
+ {folder.name}
+ {/* {folder.detail}
{folder.projectId} */}
-
- ))}
-
+
+ ))}
+
+
+
{children}
);
}
diff --git a/frontend/app/projects/[projectId]/folders/page.tsx b/frontend/app/projects/[projectId]/folders/page.tsx
new file mode 100644
index 0000000..beba86f
--- /dev/null
+++ b/frontend/app/projects/[projectId]/folders/page.tsx
@@ -0,0 +1,9 @@
+export default function Page() {
+ return (
+ <>
+ This is folders page.
+ >
+ );
+}
+
+// TODO Automatically navigate to head folder page
\ No newline at end of file
diff --git a/frontend/app/projects/[id]/home/page.tsx b/frontend/app/projects/[projectId]/home/page.tsx
similarity index 100%
rename from frontend/app/projects/[id]/home/page.tsx
rename to frontend/app/projects/[projectId]/home/page.tsx
diff --git a/frontend/app/projects/[id]/layout.tsx b/frontend/app/projects/[projectId]/layout.tsx
similarity index 100%
rename from frontend/app/projects/[id]/layout.tsx
rename to frontend/app/projects/[projectId]/layout.tsx
diff --git a/frontend/app/projects/[id]/runs/page.tsx b/frontend/app/projects/[projectId]/runs/page.tsx
similarity index 100%
rename from frontend/app/projects/[id]/runs/page.tsx
rename to frontend/app/projects/[projectId]/runs/page.tsx
diff --git a/frontend/app/projects/[id]/sidebar.tsx b/frontend/app/projects/[projectId]/sidebar.tsx
similarity index 100%
rename from frontend/app/projects/[id]/sidebar.tsx
rename to frontend/app/projects/[projectId]/sidebar.tsx