diff --git a/frontend/app/projects/[projectId]/folders/[folderId]/cases/page.tsx b/frontend/app/projects/[projectId]/folders/[folderId]/cases/page.tsx index d2ec5ca..d499b1f 100644 --- a/frontend/app/projects/[projectId]/folders/[folderId]/cases/page.tsx +++ b/frontend/app/projects/[projectId]/folders/[folderId]/cases/page.tsx @@ -71,7 +71,7 @@ export default function Page({ ))} */} - + ); } diff --git a/frontend/app/projects/[projectId]/folders/[folderId]/cases/test-case-table.tsx b/frontend/app/projects/[projectId]/folders/[folderId]/cases/test-case-table.tsx index be80fdb..bbca07a 100644 --- a/frontend/app/projects/[projectId]/folders/[folderId]/cases/test-case-table.tsx +++ b/frontend/app/projects/[projectId]/folders/[folderId]/cases/test-case-table.tsx @@ -1,4 +1,4 @@ -import { useState, useMemo, useEffect, useCallback } from "react"; +import { useState, useMemo, useCallback } from "react"; import { Table, TableHeader, @@ -7,27 +7,30 @@ import { TableRow, TableCell, Button, + Chip, DropdownTrigger, Dropdown, DropdownMenu, DropdownItem, Selection, SortDescriptor, + Link, } from "@nextui-org/react"; -import { Plus, MoreVertical, ChevronDown } from "lucide-react"; - -function capitalize(str: string) { - return str.charAt(0).toUpperCase() + str.slice(1); -} +import { MoreVertical } from "lucide-react"; const columns = [ { name: "ID", uid: "id", sortable: true }, - { name: "TITLE", uid: "title", sortable: true }, - { name: "PRIORITY", uid: "priority", sortable: true }, - { name: "ACTIONS", uid: "actions" }, + { name: "Title", uid: "title", sortable: true }, + { name: "Priority", uid: "priority", sortable: true }, + { name: "Actions", uid: "actions" }, ]; -const INITIAL_VISIBLE_COLUMNS = ["id", "title", "priority", "actions"]; +const priorities = [ + { name: "Critical", uid: "critical", color: "danger" }, + { name: "High", uid: "high", color: "warning" }, + { name: "Medium", uid: "medium", color: "primary" }, + { name: "Low", uid: "low", color: "success" }, +]; type Case = { id: number; @@ -45,57 +48,23 @@ type Case = { updatedAt: string; }; -export default function TestCaseTable({ cases }) { - const [filterValue, setFilterValue] = useState(""); +export default function TestCaseTable({ projectId, cases }) { const [selectedKeys, setSelectedKeys] = useState(new Set([])); - const [visibleColumns, setVisibleColumns] = useState( - new Set(INITIAL_VISIBLE_COLUMNS) - ); - const [statusFilter, setStatusFilter] = useState("all"); const [sortDescriptor, setSortDescriptor] = useState({ column: "id", direction: "ascending", }); - - const hasSearchFilter = Boolean(filterValue); - - const headerColumns = useMemo(() => { - if (visibleColumns === "all") { - return columns; - } - - return columns.filter((column) => - Array.from(visibleColumns).includes(column.uid) - ); - }, [visibleColumns]); - - const filteredItems = useMemo(() => { - let filteredCases = [...cases]; - - if (hasSearchFilter) { - filteredCases = filteredCases.filter((itr) => - itr.title.toLowerCase().includes(filterValue.toLowerCase()) - ); - } - if (statusFilter !== "all") { - filteredCases = filteredCases.filter((itr) => - Array.from(statusFilter).includes(itr.state) - ); - } - - return filteredCases; - }, [cases, filterValue, statusFilter]); + const headerColumns = columns; const sortedItems = useMemo(() => { - return [...filteredItems].sort((a: Case, b: Case) => { + return [...cases].sort((a: Case, b: Case) => { const first = a[sortDescriptor.column as keyof Case] as number; const second = b[sortDescriptor.column as keyof Case] as number; const cmp = first < second ? -1 : first > second ? 1 : 0; return sortDescriptor.direction === "descending" ? -cmp : cmp; }); - }, [sortDescriptor, filteredItems]); - + }, [sortDescriptor, cases]); const renderCell = useCallback((testCase: Case, columnKey: Key) => { const cellValue = testCase[columnKey as keyof Case]; @@ -103,82 +72,49 @@ export default function TestCaseTable({ cases }) { case "id": return {cellValue}; case "title": - return {cellValue}; + return ( + + {cellValue} + + ); + case "priority": + return ( + + {priorities[cellValue].name} + + ); case "actions": return ( -
- - - - - - View - Edit - Delete - - -
+ + + + + + Edit test case + + Delete test case + + + ); default: return cellValue; } }, []); - const topContent = useMemo(() => { - return ( -
-
-
- - - - - - {columns.map((column) => ( - - {capitalize(column.name)} - - ))} - - - -
-
-
- ); - }, [ - filterValue, - statusFilter, - visibleColumns, - cases.length, - hasSearchFilter, - ]); - const classNames = useMemo( () => ({ wrapper: ["max-w-3xl"], - table: ["border-t-1"], th: ["bg-transparent", "text-default-500", "border-b", "border-divider"], td: [ // changing the rows border radius @@ -200,17 +136,10 @@ export default function TestCaseTable({ cases }) { isCompact removeWrapper aria-label="Tese cases table" - checkboxesProps={{ - classNames: { - wrapper: "after:bg-foreground after:text-background text-background", - }, - }} classNames={classNames} selectedKeys={selectedKeys} selectionMode="multiple" sortDescriptor={sortDescriptor} - topContent={topContent} - topContentPlacement="outside" onSelectionChange={setSelectedKeys} onSortChange={setSortDescriptor} > diff --git a/frontend/app/projects/[projectId]/folders/layout.tsx b/frontend/app/projects/[projectId]/folders/layout.tsx index ccef211..3ddd4ca 100644 --- a/frontend/app/projects/[projectId]/folders/layout.tsx +++ b/frontend/app/projects/[projectId]/folders/layout.tsx @@ -231,7 +231,7 @@ export default function FoldersLayout({ return (
-
+
-

- {selectedFolder ? selectedFolder.name : "Select Folder"} -

+
+

+ {selectedFolder ? selectedFolder.name : "Select Folder"} +

+ +
{children}
diff --git a/frontend/app/projects/[projectId]/layout.tsx b/frontend/app/projects/[projectId]/layout.tsx index 00500d6..e3616d4 100644 --- a/frontend/app/projects/[projectId]/layout.tsx +++ b/frontend/app/projects/[projectId]/layout.tsx @@ -7,10 +7,10 @@ export default function SidebarLayout({ }) { return ( <> -
+
-
{children}
+
{children}
diff --git a/frontend/app/projects/[projectId]/sidebar.tsx b/frontend/app/projects/[projectId]/sidebar.tsx index 4c43858..3620239 100644 --- a/frontend/app/projects/[projectId]/sidebar.tsx +++ b/frontend/app/projects/[projectId]/sidebar.tsx @@ -8,7 +8,7 @@ export default function Sidebar() { const { projectId } = useGetCurrentIds(); const router = useRouter(); return ( -
+
} diff --git a/frontend/app/projects/project-card.tsx b/frontend/app/projects/project-card.tsx index fc08cac..54c6ac3 100644 --- a/frontend/app/projects/project-card.tsx +++ b/frontend/app/projects/project-card.tsx @@ -19,7 +19,7 @@ export function ProjectCard({ project, onEditClick, onDeleteClick }) {
- {project.name} + {project.name}