diff --git a/app/[locale]/(protected)/admin/add-experts/create/page.tsx b/app/[locale]/(protected)/admin/add-experts/create/page.tsx index abc66bc2..783be176 100644 --- a/app/[locale]/(protected)/admin/add-experts/create/page.tsx +++ b/app/[locale]/(protected)/admin/add-experts/create/page.tsx @@ -34,6 +34,9 @@ const FormSchema = z.object({ email: z.string({ required_error: "Required", }), + position: z.string({ + required_error: "Required", + }), region: z.string({ required_error: "Required", }), @@ -147,7 +150,28 @@ export default function AddExpertForm() { )} /> + ( + + Posisi + + + + )} + /> { end: new Date(event.endDate), allDay: true, extendedProps: { + isPublish: event.isPublish, calendar: event.agendaType, description: event.description, createdByName: event.createdByName, }, })); + console.log("Dataaa event : ", events); + setCalendarEvents(events); } }; @@ -238,6 +251,7 @@ const CalendarView = ({ categories }: CalendarViewProps) => { title: item.title, createBy: "Mabes Polri - Approver", createdByName: item.createdByName, + isPublish: item.isPublish, start: new Date(item.startDate), end: new Date(item.endDate), allDay: true, // Sesuaikan jika memang ada event sepanjang hari @@ -334,14 +348,13 @@ const CalendarView = ({ categories }: CalendarViewProps) => { const renderEventContent = (eventInfo: any) => { const { title } = eventInfo.event; - const { isPublish } = eventInfo.event.extendedProps; - const { createdByName } = eventInfo.event.extendedProps; + const { createdByName, isPublish } = eventInfo.event.extendedProps; return ( <>
{" "} - {isPublish && } + {isPublish === true ? : }

{title}

@@ -415,6 +428,7 @@ const CalendarView = ({ categories }: CalendarViewProps) => { end: new Date(item.endDate), createBy: "Mabes Polri - Approver", // Sesuaikan dengan data yang sebenarnya jika ada createdByName: item.createdByName, + isPublish: item.isPublish, allDay: true, extendedProps: { calendar: item.agendaType, @@ -437,6 +451,7 @@ const CalendarView = ({ categories }: CalendarViewProps) => { item, text, createdBy, + isPublish, bgColor, }) => (
{ onClick={() => handleClickListItem(item)} >
- + {isPublish ? : }

{text}

Created By: {createdBy}

@@ -475,6 +490,7 @@ const CalendarView = ({ categories }: CalendarViewProps) => { item={event} text={event.title} createdBy={event.createdByName} + isPublish={event.isPublish} bgColor={getEventColor(event.agendaType)} /> ))} @@ -504,6 +520,7 @@ const CalendarView = ({ categories }: CalendarViewProps) => { item={event} text={event.title} createdBy={event.createdByName} + isPublish={event.isPublish} bgColor={getEventColor(event.agendaType)} /> ))} diff --git a/app/[locale]/(protected)/contributor/task/components/task-table.tsx b/app/[locale]/(protected)/contributor/task/components/task-table.tsx index 64d80ec2..8dcf23db 100644 --- a/app/[locale]/(protected)/contributor/task/components/task-table.tsx +++ b/app/[locale]/(protected)/contributor/task/components/task-table.tsx @@ -26,6 +26,7 @@ import { } from "@/components/ui/table"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { + ChevronDown, ChevronLeft, ChevronRight, Eye, @@ -52,6 +53,8 @@ import { useRouter, useSearchParams } from "next/navigation"; import TablePagination from "@/components/table/table-pagination"; import columns from "./columns"; import { listTask } from "@/service/task"; +import { Label } from "@/components/ui/label"; +import { format } from "date-fns"; const TaskTable = () => { const router = useRouter(); @@ -70,6 +73,10 @@ const TaskTable = () => { pageIndex: 0, pageSize: 10, }); + const [statusFilter, setStatusFilter] = React.useState([]); + const [dateFilter, setDateFilter] = React.useState(""); + const [endDate, setEndDate] = React.useState(""); + const [filterByCode, setFilterByCode] = React.useState(""); const [page, setPage] = React.useState(1); const [totalPage, setTotalPage] = React.useState(1); const [limit, setLimit] = React.useState(10); @@ -106,14 +113,19 @@ const TaskTable = () => { React.useEffect(() => { fetchData(); - }, [page, limit, isSpecificAttention, search]); + }, [page, limit, isSpecificAttention, search, dateFilter, filterByCode]); async function fetchData() { + const formattedStartDate = dateFilter + ? format(new Date(dateFilter), "yyyy-MM-dd") + : ""; try { const res = await listTask( - search, page - 1, + search, limit, + filterByCode, + formattedStartDate, isSpecificAttention ? "atensi-khusus" : "tugas-harian" ); const data = res?.data?.data; @@ -137,6 +149,21 @@ const TaskTable = () => { table.getColumn("judul")?.setFilterValue(e.target.value); // Set filter tabel }; + function handleStatusCheckboxChange(value: any) { + setStatusFilter((prev: any) => + prev.includes(value) + ? prev.filter((status: any) => status !== value) + : [...prev, value] + ); + } + + const handleSearchFilterByCode = (e: React.ChangeEvent) => { + const value = e.target.value; + console.log("code :", value); + setFilterByCode(value); + fetchData(); + }; + return (
@@ -191,17 +218,81 @@ const TaskTable = () => { />
-
- ) => - table.getColumn("status")?.setFilterValue(event.target.value) - } - className="max-w-sm " - /> +
+
+
+ + + + + +
+

Filter

+
+
+ + setDateFilter(e.target.value)} + className="max-w-sm" + /> +
+
+ + +
+ +
+ handleStatusCheckboxChange(1)} + /> + +
+
+ handleStatusCheckboxChange(2)} + /> + +
+
+
+
+
+
+ ) => + table.getColumn("status")?.setFilterValue(event.target.value) + } + className="max-w-sm " + /> +
diff --git a/components/form/content/image-form.tsx b/components/form/content/image-form.tsx index 97a4fb7d..65facf4f 100644 --- a/components/form/content/image-form.tsx +++ b/components/form/content/image-form.tsx @@ -930,7 +930,7 @@ export default function FormImage() { }`} onClick={() => handleArticleIdClick(id)} > - {id} + {"Narasi " + (index + 1)}

))} diff --git a/components/form/content/spit-convert-form.tsx b/components/form/content/spit-convert-form.tsx index bfc8f4b2..1769da77 100644 --- a/components/form/content/spit-convert-form.tsx +++ b/components/form/content/spit-convert-form.tsx @@ -653,7 +653,7 @@ export default function FormConvertSPIT() { }`} onClick={() => handleArticleIdClick(id)} > - {id} + {"Narasi " + (index + 1)} ))} @@ -737,6 +737,9 @@ export default function FormConvertSPIT() { +
+ +
{files?.map((file, index) => (
{ + try { + const response = await getMediaUpload(id, userLevelId); + setUploadResults(response?.data?.data || []); + } catch (error) { + console.error("Error fetching all data:", error); + } + }; + const fetchFilteredData = async (selectedLevels: any[]) => { try { - const levels = - selectedLevels.length === 0 ? userLevelId : selectedLevels.join(","); + if (selectedLevels.length === 0) { + fetchAllData(); // Jika tidak ada filter, panggil semua data + return; + } + const levels = selectedLevels.join(","); const response = await getMediaUpload(id, levels); - setUploadResults(response?.data?.data || []); } catch (error) { console.error("Error fetching filtered data:", error); @@ -462,7 +474,6 @@ export default function FormTaskDetail() { console.log("Checked Levels:", Array.from(updatedLevels)); - // Fetch data dengan filter userLevelId fetchFilteredData(Array.from(updatedLevels)); return updatedLevels; @@ -1413,7 +1424,10 @@ export default function FormTaskDetail() { type="button" color="primary" variant={"default"} - onClick={() => setIsTableResult(!isTableResult)} + onClick={() => { + setIsTableResult(!isTableResult); + if (!isTableResult) fetchAllData(); // Panggil API saat tombol diklik + }} > Hasil Upload {Number(userId)} @@ -1525,6 +1539,7 @@ export default function FormTaskDetail() {
+ @@ -1536,6 +1551,9 @@ export default function FormTaskDetail() { + ))} diff --git a/service/task.ts b/service/task.ts index 698a9755..2ea144ee 100644 --- a/service/task.ts +++ b/service/task.ts @@ -12,13 +12,16 @@ import { // } export async function listTask( - title: string = "", page: any, + title: string = "", size: any, + code: any, + createdAt: any, taskType: string ) { - const url = `assignment/list?enablePage=1&size=${size}&page=${page}&title=${title}&taskType=${taskType}`; - return httpGetInterceptor(url); + return httpGetInterceptor( + `assignment/list?enablePage=1&size=${size}&page=${page}&title=${title}&taskType=${taskType}&uniqueCode=${code}&createdAt=${createdAt}` + ); } // export async function createTask(data: any) {
Judul Konten KategoryKreator Diupload Oleh
{item.fileType.name} {item.category.name} + {item.creatorGroupLevelName} + {item.creatorName}