From 71bebd3a868e2a4184e5f4e88db629d1da82b8a5 Mon Sep 17 00:00:00 2001 From: hanif salafi Date: Wed, 11 Dec 2024 01:03:36 +0700 Subject: [PATCH] feat: update all tables on kurator, edit layout, etc --- .../(protected)/faq/table/blog-table.tsx | 333 ------------------ app/[locale]/(protected)/faq/table/data.ts | 65 ---- .../components/table.tsx | 0 .../layout.tsx | 0 .../page.tsx | 0 components/table/table-pagination.tsx | 0 service/master/knowledge-base.ts | 15 + 7 files changed, 15 insertions(+), 398 deletions(-) delete mode 100644 app/[locale]/(protected)/faq/table/blog-table.tsx delete mode 100644 app/[locale]/(protected)/faq/table/data.ts create mode 100644 app/[locale]/(protected)/frequently-asked-question/components/table.tsx rename app/[locale]/(protected)/{faq => frequently-asked-question}/layout.tsx (100%) rename app/[locale]/(protected)/{faq => frequently-asked-question}/page.tsx (100%) create mode 100644 components/table/table-pagination.tsx create mode 100644 service/master/knowledge-base.ts diff --git a/app/[locale]/(protected)/faq/table/blog-table.tsx b/app/[locale]/(protected)/faq/table/blog-table.tsx deleted file mode 100644 index bb8974d7..00000000 --- a/app/[locale]/(protected)/faq/table/blog-table.tsx +++ /dev/null @@ -1,333 +0,0 @@ -"use client"; - -import * as React from "react"; -import { - ColumnDef, - ColumnFiltersState, - PaginationState, - SortingState, - VisibilityState, - flexRender, - getCoreRowModel, - getFilteredRowModel, - getPaginationRowModel, - getSortedRowModel, - useReactTable, -} from "@tanstack/react-table"; -import { Button } from "@/components/ui/button"; - -import { - Table, - TableBody, - TableCell, - TableHead, - TableHeader, - TableRow, -} from "@/components/ui/table"; -import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; -import { - Badge, - ChevronLeft, - ChevronRight, - Eye, - MoreVertical, - Search, - SquarePen, - Trash2, - TrendingDown, - TrendingUp, -} from "lucide-react"; -import { cn } from "@/lib/utils"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from "@/components/ui/dropdown-menu"; - -export type CompanyData = { - no: number; - title: string; - category: string; - createdAt: string; - tags: string; - statusName: string; -}; -import { data } from "./data"; -import { Input } from "@/components/ui/input"; -import { InputGroup, InputGroupText } from "@/components/ui/input-group"; -import { paginationBlog } from "@/service/blog/blog"; - -export const columns: ColumnDef[] = [ - { - accessorKey: "no", - header: "No", - cell: ({ row }) => ( -
-
-

- {row.getValue("no")} -

-
-
- ), - }, - { - accessorKey: "title", - header: "Judul", - cell: ({ row }) => ( -
-
-

- {row.getValue("title")} -

-
-
- ), - }, - { - accessorKey: "categoryName", - header: "Kategori ", - cell: ({ row }) => ( - {row.getValue("categoryName")} - ), - }, - { - accessorKey: "createdAt", - header: "Tanggal Unggah ", - cell: ({ row }) => ( - {row.getValue("createdAt")} - ), - }, - { - accessorKey: "tags", - header: "Tag ", - cell: ({ row }) => ( - {row.getValue("tags")} - ), - }, - { - accessorKey: "statusName", - header: "Status", - cell: ({ row }) => { - return ( - - {row.getValue("statusName")} - - ); - }, - }, - { - id: "actions", - accessorKey: "action", - header: "Actions", - enableHiding: false, - cell: ({ row }) => { - return ( - - - - - - - - View - - - - Edit - - - - Delete - - - - ); - }, - }, -]; - -const BlogTable = () => { - const [blogTable, setBlogTable] = React.useState([]); - const [sorting, setSorting] = React.useState([]); - const [columnFilters, setColumnFilters] = React.useState( - [] - ); - const [columnVisibility, setColumnVisibility] = - React.useState({}); - const [rowSelection, setRowSelection] = React.useState({}); - const [pagination, setPagination] = React.useState({ - pageIndex: 0, - pageSize: 10, - }); - const [page, setPage] = React.useState(1); - const [totalPage, setTotalPage] = React.useState(1); - const [limit, setLimit] = React.useState(10); - - const table = useReactTable({ - data: blogTable, - columns, - onSortingChange: setSorting, - onColumnFiltersChange: setColumnFilters, - getCoreRowModel: getCoreRowModel(), - getPaginationRowModel: getPaginationRowModel(), - getSortedRowModel: getSortedRowModel(), - getFilteredRowModel: getFilteredRowModel(), - onColumnVisibilityChange: setColumnVisibility, - onRowSelectionChange: setRowSelection, - onPaginationChange: setPagination, - state: { - sorting, - columnFilters, - columnVisibility, - rowSelection, - pagination, - }, - }); - - React.useEffect(() => { - initState(); - }, [page, limit]); - - async function initState() { - try { - const res = await paginationBlog(limit, page); - const data = res.data.data.content.map((item: any, index: number) => ({ - no: (page - 1) * limit + index + 1, - title: item.title, - categoryName: item.categoryName, - tags: item.tags, - assignmentType: item.assignmentType?.name || "-", - createdAt: item.createdAt, - statusName: item.statusName, - })); - - setBlogTable(data); - setTotalPage(res.data.totalPages); - } catch (error) { - console.error("Error fetching tasks:", error); - } - } - - return ( -
-
-
- - - - - - -
-
- ) => - table.getColumn("status")?.setFilterValue(event.target.value) - } - className="max-w-sm " - /> -
-
- - - {table.getHeaderGroups().map((headerGroup) => ( - - {headerGroup.headers.map((header) => ( - - {header.isPlaceholder - ? null - : flexRender( - header.column.columnDef.header, - header.getContext() - )} - - ))} - - ))} - - - {table.getRowModel().rows?.length ? ( - table.getRowModel().rows.map((row) => ( - - {row.getVisibleCells().map((cell) => ( - - {flexRender(cell.column.columnDef.cell, cell.getContext())} - - ))} - - )) - ) : ( - - - No results. - - - )} - -
-
-
- {table.getFilteredSelectedRowModel().rows.length} of{" "} - {table.getFilteredRowModel().rows.length} row(s) selected. -
-
- - {table.getPageOptions().map((page, pageIndex) => ( - - ))} - -
-
-
- ); -}; - -export default BlogTable; diff --git a/app/[locale]/(protected)/faq/table/data.ts b/app/[locale]/(protected)/faq/table/data.ts deleted file mode 100644 index 6bb2b47a..00000000 --- a/app/[locale]/(protected)/faq/table/data.ts +++ /dev/null @@ -1,65 +0,0 @@ -export const data = [ - { - title: "Ops Mantap Praja & Pilkada 2024", - category: "Giat Pimpinan", - date: "15/10/2024 9:11", - tag: "percobaan", - status: "Terkirim", - }, - { - title: "Seputar Prestasi", - status: "Terkirim", - category: "Giat Pimpinan", - date: "15/10/2024 9:11", - tag: "percobaan", - }, - { - title: "Ops Mantap Praja & Pilkada 2024", - status: "Terkirim", - category: "Giat Pimpinan", - date: "15/10/2024 9:11", - tag: "percobaan", - }, - { - title: "Ops Mantap Praja & Pilkada 2024", - status: "Terkirim", - category: "Giat Pimpinan", - date: "15/10/2024 9:11", - tag: "percobaan", - }, - { - title: "Seputar Prestasi", - status: "Terkirim", - category: "Giat Pimpinan", - date: "15/10/2024 9:11", - tag: "percobaan", - }, - { - title: "Seputar Prestasi", - status: "Terkirim", - category: "Giat Pimpinan", - date: "15/10/2024 9:11", - tag: "percobaan", - }, - { - title: "Seputar Prestasi", - status: "Terkirim", - category: "Giat Pimpinan", - date: "15/10/2024 9:11", - tag: "percobaan", - }, - { - title: "Seputar Prestasi", - status: "Terkirim", - category: "Giat Pimpinan", - date: "15/10/2024 9:11", - tag: "percobaan", - }, - { - title: "Seputar Prestasi", - status: "Terkirim", - category: "Giat Pimpinan", - date: "15/10/2024 9:11", - tag: "percobaan", - }, -]; diff --git a/app/[locale]/(protected)/frequently-asked-question/components/table.tsx b/app/[locale]/(protected)/frequently-asked-question/components/table.tsx new file mode 100644 index 00000000..e69de29b diff --git a/app/[locale]/(protected)/faq/layout.tsx b/app/[locale]/(protected)/frequently-asked-question/layout.tsx similarity index 100% rename from app/[locale]/(protected)/faq/layout.tsx rename to app/[locale]/(protected)/frequently-asked-question/layout.tsx diff --git a/app/[locale]/(protected)/faq/page.tsx b/app/[locale]/(protected)/frequently-asked-question/page.tsx similarity index 100% rename from app/[locale]/(protected)/faq/page.tsx rename to app/[locale]/(protected)/frequently-asked-question/page.tsx diff --git a/components/table/table-pagination.tsx b/components/table/table-pagination.tsx new file mode 100644 index 00000000..e69de29b diff --git a/service/master/knowledge-base.ts b/service/master/knowledge-base.ts new file mode 100644 index 00000000..5af98fd1 --- /dev/null +++ b/service/master/knowledge-base.ts @@ -0,0 +1,15 @@ +import { + httpGetInterceptor, + httpPostInterceptor, +} from "../http-config/http-interceptor-service"; + +export async function listContest(size: number, page: number) { + return await httpGetInterceptor( + `contest/pagination?enablePage=1&size=${size}&page=${page}` + ); +} + +export async function createTask(data: any) { + const url = "assignment"; + return httpPostInterceptor(url, data); +}