selected folder
This commit is contained in:
@@ -32,7 +32,11 @@ async function fetchCases(url) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function Page({ params }: { params: { projectId: string, folderId: string } }) {
|
export default function Page({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: { projectId: string; folderId: string };
|
||||||
|
}) {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const [cases, setCases] = useState([]);
|
const [cases, setCases] = useState([]);
|
||||||
const url = `${apiServer}/cases?folderId=${params.folderId}`;
|
const url = `${apiServer}/cases?folderId=${params.folderId}`;
|
||||||
@@ -51,6 +55,7 @@ export default function Page({ params }: { params: { projectId: string, folderId
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
<>
|
||||||
<Listbox aria-label="Listbox Variants">
|
<Listbox aria-label="Listbox Variants">
|
||||||
{cases.map((testCase, index) => (
|
{cases.map((testCase, index) => (
|
||||||
<ListboxItem
|
<ListboxItem
|
||||||
@@ -65,5 +70,6 @@ export default function Page({ params }: { params: { projectId: string, folderId
|
|||||||
</ListboxItem>
|
</ListboxItem>
|
||||||
))}
|
))}
|
||||||
</Listbox>
|
</Listbox>
|
||||||
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ const apiServer = Config.apiServer;
|
|||||||
import { Button, Listbox, ListboxItem } from "@nextui-org/react";
|
import { Button, Listbox, ListboxItem } from "@nextui-org/react";
|
||||||
import { Folder, Plus } from "lucide-react";
|
import { Folder, Plus } from "lucide-react";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
|
import useGetCurrentIds from "@/utils/useGetCurrentIds";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fetch folder records
|
* fetch folder records
|
||||||
@@ -41,24 +42,34 @@ export default function ProjectsLayout({
|
|||||||
params: { projectId: string };
|
params: { projectId: string };
|
||||||
}) {
|
}) {
|
||||||
const [folders, setFolders] = useState([]);
|
const [folders, setFolders] = useState([]);
|
||||||
|
const [selectedFolder, setSelectedFolder] = useState({
|
||||||
|
id: null,
|
||||||
|
name: "",
|
||||||
|
});
|
||||||
const url = `${apiServer}/folders?projectId=${params.projectId}`;
|
const url = `${apiServer}/folders?projectId=${params.projectId}`;
|
||||||
|
const { folderId } = useGetCurrentIds();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
async function fetchDataEffect() {
|
async function fetchDataEffect() {
|
||||||
try {
|
try {
|
||||||
const data = await fetchFolders(url);
|
const data = await fetchFolders(url);
|
||||||
setFolders(data);
|
setFolders(data);
|
||||||
|
|
||||||
|
const selectedFolderFromUrl = data.find(
|
||||||
|
(folder) => folder.id === folderId
|
||||||
|
);
|
||||||
|
setSelectedFolder(selectedFolderFromUrl);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error in effect:", error.message);
|
console.error("Error in effect:", error.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fetchDataEffect();
|
fetchDataEffect();
|
||||||
}, []);
|
}, [folderId]);
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
return (
|
return (
|
||||||
<div className="flex">
|
<div className="flex w-full">
|
||||||
<div className="w-64 min-h-screen border-r-1">
|
<div className="w-64 min-h-screen border-r-1">
|
||||||
<Button
|
<Button
|
||||||
startContent={<Plus size={16} />}
|
startContent={<Plus size={16} />}
|
||||||
@@ -78,15 +89,21 @@ export default function ProjectsLayout({
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
startContent={<Folder size={20} color="#99ccff" fill="#99ccff" />}
|
startContent={<Folder size={20} color="#99ccff" fill="#99ccff" />}
|
||||||
|
className={
|
||||||
|
selectedFolder && folder.id === selectedFolder.id
|
||||||
|
? "bg-gray-300"
|
||||||
|
: ""
|
||||||
|
}
|
||||||
>
|
>
|
||||||
{folder.name}
|
{folder.name}
|
||||||
{/* {folder.detail}
|
|
||||||
{folder.projectId} */}
|
|
||||||
</ListboxItem>
|
</ListboxItem>
|
||||||
))}
|
))}
|
||||||
</Listbox>
|
</Listbox>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex-grow">{children}</div>
|
<div className="flex-grow w-full">
|
||||||
|
<h3 className="border-b-1 w-full font-bold p-3">{selectedFolder ? selectedFolder.name : "Select Folder"}</h3>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ export default function ProjectsLayout({
|
|||||||
<>
|
<>
|
||||||
<div className="flex border-t-1 min-h-screen">
|
<div className="flex border-t-1 min-h-screen">
|
||||||
<Sidebar />
|
<Sidebar />
|
||||||
<div className="flex">
|
<div className="flex w-full">
|
||||||
<div className="flex-grow bg-white rounded-lg">{children}</div>
|
<div className="flex-grow bg-white rounded-lg">{children}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user