diff --git a/app/[locale]/(protected)/admin/settings/category/component/create.tsx b/app/[locale]/(protected)/admin/settings/category/component/create.tsx index 73fe6478..afd65cd9 100644 --- a/app/[locale]/(protected)/admin/settings/category/component/create.tsx +++ b/app/[locale]/(protected)/admin/settings/category/component/create.tsx @@ -243,7 +243,10 @@ export default function CreateCategoryModal() { {t("add-category")} - + {t("add-category")} diff --git a/app/[locale]/(protected)/contributor/blog/components/blog-table.tsx b/app/[locale]/(protected)/contributor/blog/components/blog-table.tsx index 60104d67..8d87a921 100644 --- a/app/[locale]/(protected)/contributor/blog/components/blog-table.tsx +++ b/app/[locale]/(protected)/contributor/blog/components/blog-table.tsx @@ -38,6 +38,8 @@ import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Label } from "@/components/ui/label"; @@ -60,9 +62,10 @@ const BlogTable = () => { const [columnVisibility, setColumnVisibility] = React.useState({}); const [rowSelection, setRowSelection] = React.useState({}); + const [showData, setShowData] = React.useState("50"); const [pagination, setPagination] = React.useState({ pageIndex: 0, - pageSize: 10, + pageSize: Number(showData), }); const [page, setPage] = React.useState(1); const [totalPage, setTotalPage] = React.useState(1); @@ -106,12 +109,12 @@ const BlogTable = () => { React.useEffect(() => { fetchData(); getCategories(); - }, [categoryFilter, statusFilter, page, limit, search]); + }, [categoryFilter, statusFilter, page, showData, search]); async function fetchData() { try { const res = await paginationBlog( - limit, + showData, page - 1, search, categoryFilter, @@ -120,7 +123,7 @@ const BlogTable = () => { const data = res?.data?.data; const contentData = data?.content; contentData.forEach((item: any, index: number) => { - item.no = (page - 1) * limit + index + 1; + item.no = (page - 1) * Number(showData) + index + 1; }); console.log("contentData : ", contentData); @@ -210,6 +213,34 @@ const BlogTable = () => {
+
+ + + + + + + + 1 - 10 Data + + + 1 - 50 Data + + + 1 - 100 Data + + + 1 - 250 Data + + + + +
+
+ + + + + + + + 1 - 10 Data + + + 1 - 50 Data + + + 1 - 100 Data + + + 1 - 250 Data + + + + +
+
+ + + + + + + + 1 - 10 Data + + + 1 - 50 Data + + + 1 - 100 Data + + + 1 - 250 Data + + + + +
+
+ + + + + + + + 1 - 10 Data + + + 1 - 50 Data + + + 1 - 100 Data + + + 1 - 250 Data + + + + +
+ + + + + 1 - 10 Data + + + 1 - 50 Data + + + 1 - 100 Data + + + 1 - 250 Data + + + + +
-
- ) => - table.getColumn("status")?.setFilterValue(event.target.value) - } - className="max-w-sm " - /> +
+
+ + + + + + + + 1 - 10 Data + + + 1 - 50 Data + + + 1 - 100 Data + + + 1 - 250 Data + + + + +
+
+ ) => + table.getColumn("status")?.setFilterValue(event.target.value) + } + className="max-w-sm " + /> +
diff --git a/app/[locale]/(protected)/contributor/schedule/press-conference/components/presscon-table.tsx b/app/[locale]/(protected)/contributor/schedule/press-conference/components/presscon-table.tsx index 8922a214..6e17551e 100644 --- a/app/[locale]/(protected)/contributor/schedule/press-conference/components/presscon-table.tsx +++ b/app/[locale]/(protected)/contributor/schedule/press-conference/components/presscon-table.tsx @@ -47,6 +47,13 @@ import { CardHeader, CardTitle } from "@/components/ui/card"; import { Link } from "@/i18n/routing"; import { useTranslations } from "next-intl"; import useTableColumns from "./columns"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; const PressConferenceTable = () => { const router = useRouter(); @@ -61,9 +68,10 @@ const PressConferenceTable = () => { const [columnVisibility, setColumnVisibility] = React.useState({}); const [rowSelection, setRowSelection] = React.useState({}); + const [showData, setShowData] = React.useState("50"); const [pagination, setPagination] = React.useState({ pageIndex: 0, - pageSize: 10, + pageSize: Number(showData), }); const [page, setPage] = React.useState(1); const [totalPage, setTotalPage] = React.useState(1); @@ -100,15 +108,15 @@ const PressConferenceTable = () => { React.useEffect(() => { fetchData(); - }, [page, limit, search]); + }, [page, showData, search]); async function fetchData() { try { - const res = await paginationSchedule(limit, page - 1, 1, search); + const res = await paginationSchedule(showData, page - 1, 1, search); const data = res?.data?.data; const contentData = data?.content; contentData.forEach((item: any, index: number) => { - item.no = (page - 1) * limit + index + 1; + item.no = (page - 1) * Number(showData) + index + 1; }); console.log("contentData : ", contentData); @@ -161,17 +169,47 @@ const PressConferenceTable = () => { /> -
- ) => - table.getColumn("status")?.setFilterValue(event.target.value) - } - className="max-w-sm " - /> +
+
+ + + + + + + + 1 - 10 Data + + + 1 - 50 Data + + + 1 - 100 Data + + + 1 - 250 Data + + + + +
+
+ ) => + table.getColumn("status")?.setFilterValue(event.target.value) + } + className="max-w-sm " + /> +
diff --git a/app/[locale]/(protected)/contributor/schedule/press-release/components/pressrilis-table.tsx b/app/[locale]/(protected)/contributor/schedule/press-release/components/pressrilis-table.tsx index 1aefa609..aedda3c9 100644 --- a/app/[locale]/(protected)/contributor/schedule/press-release/components/pressrilis-table.tsx +++ b/app/[locale]/(protected)/contributor/schedule/press-release/components/pressrilis-table.tsx @@ -48,6 +48,13 @@ import { useTranslations } from "next-intl"; import { CardHeader, CardTitle } from "@/components/ui/card"; import { Link } from "@/i18n/routing"; import useTableColumns from "./columns"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; const PressReleaseTable = () => { const router = useRouter(); @@ -62,9 +69,10 @@ const PressReleaseTable = () => { const [columnVisibility, setColumnVisibility] = React.useState({}); const [rowSelection, setRowSelection] = React.useState({}); + const [showData, setShowData] = React.useState("50"); const [pagination, setPagination] = React.useState({ pageIndex: 0, - pageSize: 10, + pageSize: Number(showData), }); const [page, setPage] = React.useState(1); const [totalPage, setTotalPage] = React.useState(1); @@ -101,15 +109,15 @@ const PressReleaseTable = () => { React.useEffect(() => { fetchData(); - }, [page, limit, search]); + }, [page, showData, search]); async function fetchData() { try { - const res = await paginationSchedule(limit, page - 1, 3, search); + const res = await paginationSchedule(showData, page - 1, 3, search); const data = res?.data?.data; const contentData = data?.content; contentData.forEach((item: any, index: number) => { - item.no = (page - 1) * limit + index + 1; + item.no = (page - 1) * Number(showData) + index + 1; }); console.log("contentData : ", contentData); @@ -162,17 +170,47 @@ const PressReleaseTable = () => { /> -
- ) => - table.getColumn("status")?.setFilterValue(event.target.value) - } - className="w-full " - /> +
+
+ + + + + + + + 1 - 10 Data + + + 1 - 50 Data + + + 1 - 100 Data + + + 1 - 250 Data + + + + +
+
+ ) => + table.getColumn("status")?.setFilterValue(event.target.value) + } + className="w-full " + /> +
diff --git a/app/[locale]/(protected)/contributor/task/components/task-table.tsx b/app/[locale]/(protected)/contributor/task/components/task-table.tsx index dde139dc..50b45411 100644 --- a/app/[locale]/(protected)/contributor/task/components/task-table.tsx +++ b/app/[locale]/(protected)/contributor/task/components/task-table.tsx @@ -42,6 +42,8 @@ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Input } from "@/components/ui/input"; @@ -71,9 +73,10 @@ const TaskTable = () => { const [columnVisibility, setColumnVisibility] = React.useState({}); const [rowSelection, setRowSelection] = React.useState({}); + const [showData, setShowData] = React.useState("50"); const [pagination, setPagination] = React.useState({ pageIndex: 0, - pageSize: 10, + pageSize: Number(showData), }); const [statusFilter, setStatusFilter] = React.useState([]); const [dateFilter, setDateFilter] = React.useState(""); @@ -117,7 +120,7 @@ const TaskTable = () => { fetchData(); }, [ page, - limit, + showData, isSpecificAttention, search, dateFilter, @@ -133,7 +136,7 @@ const TaskTable = () => { const res = await listTask( page - 1, search, - limit, + showData, filterByCode, formattedStartDate, isSpecificAttention ? "atensi-khusus" : "tugas-harian", @@ -153,7 +156,7 @@ const TaskTable = () => { // }); contentData.forEach((item: any, index: number) => { - item.no = (page - 1) * limit + index + 1; + item.no = (page - 1) * Number(showData) + index + 1; }); console.log("contentData : ", contentData); @@ -241,36 +244,64 @@ const TaskTable = () => { /> -
-
-
+ +
+
+
- - + + + 1 - 10 Data + + + 1 - 50 Data + + + 1 - 100 Data + + + 1 - 250 Data + + + + +
+ + + + + +
+

Filter

+
+
+ + setDateFilter(e.target.value)} + className="max-w-sm" + /> +
+ {/*
{ className="max-w-sm" />
*/} - -
- handleStatusCheckboxChange(1)} - /> - -
-
- handleStatusCheckboxChange(2)} - /> - -
-
-
-
+ +
+ handleStatusCheckboxChange(1)} + /> + +
+
+ handleStatusCheckboxChange(2)} + /> + +
+ +
- {/*
+
+ {/*
{ className="max-w-sm " />
*/} -
diff --git a/app/[locale]/(protected)/shared/contest/components/contest-table.tsx b/app/[locale]/(protected)/shared/contest/components/contest-table.tsx index 12039a4d..59e08c6f 100644 --- a/app/[locale]/(protected)/shared/contest/components/contest-table.tsx +++ b/app/[locale]/(protected)/shared/contest/components/contest-table.tsx @@ -43,6 +43,13 @@ import TablePagination from "@/components/table/table-pagination"; import columns from "./columns"; import { listContest } from "@/service/contest/contest"; import useTableColumns from "./columns"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; const TaskTable = () => { const router = useRouter(); @@ -56,9 +63,10 @@ const TaskTable = () => { const [columnVisibility, setColumnVisibility] = React.useState({}); const [rowSelection, setRowSelection] = React.useState({}); + const [showData, setShowData] = React.useState("50"); const [pagination, setPagination] = React.useState({ pageIndex: 0, - pageSize: 10, + pageSize: Number(showData), }); const [page, setPage] = React.useState(1); const [totalPage, setTotalPage] = React.useState(1); @@ -95,15 +103,15 @@ const TaskTable = () => { React.useEffect(() => { fetchData(); - }, [page, limit, search]); + }, [page, showData, search]); async function fetchData() { try { - const res = await listContest(search, limit, page - 1); + const res = await listContest(search, showData, page - 1); const data = res?.data?.data; const contentData = data?.content; contentData.forEach((item: any, index: number) => { - item.no = (page - 1) * limit + index + 1; + item.no = (page - 1) * Number(showData) + index + 1; }); console.log("contentData : ", contentData); @@ -138,17 +146,47 @@ const TaskTable = () => { /> -
- ) => - table.getColumn("status")?.setFilterValue(event.target.value) - } - className="max-w-sm " - /> +
+
+ + + + + + + + 1 - 10 Data + + + 1 - 50 Data + + + 1 - 100 Data + + + 1 - 250 Data + + + + +
+
+ ) => + table.getColumn("status")?.setFilterValue(event.target.value) + } + className="max-w-sm " + /> +
diff --git a/components/form/planning/medsos-publish.tsx b/components/form/planning/medsos-publish.tsx index 84bcfa31..ebdaac60 100644 --- a/components/form/planning/medsos-publish.tsx +++ b/components/form/planning/medsos-publish.tsx @@ -369,7 +369,7 @@ export default function PublishMedsos() { diff --git a/components/form/task/task-detail-form.tsx b/components/form/task/task-detail-form.tsx index f2695648..3f6b852a 100644 --- a/components/form/task/task-detail-form.tsx +++ b/components/form/task/task-detail-form.tsx @@ -66,6 +66,7 @@ import { Icon } from "@iconify/react/dist/iconify.js"; import WavesurferPlayer from "@wavesurfer/react"; import WaveSurfer from "wavesurfer.js"; import { InputGroup, InputGroupText } from "@/components/ui/input-group"; +import { useTranslations } from "next-intl"; const taskSchema = z.object({ uniqueCode: z.string().min(1, { message: "Judul diperlukan" }), @@ -206,6 +207,7 @@ export default function FormTaskDetail() { text: false, }); + const t = useTranslations("Form"); const [uploadResults, setUploadResults] = useState([]); const [isTableResult, setIsTableResult] = useState(false); const [isSentResult] = useState(false); @@ -812,7 +814,7 @@ export default function FormTaskDetail() { {detail !== undefined ? (
-

Detail Penugasan

+

{t("detail-task")}

setModalType("terkirim")} > - {sentAcceptance?.length} Terkirim + {sentAcceptance?.length} {t("sent")} @@ -840,13 +842,15 @@ export default function FormTaskDetail() { onClick={() => setModalType("diterima")} className="ml-3" > - {acceptAcceptance?.length} Diterima + {acceptAcceptance?.length} {t("accepted")} - Detail Status Penugasan + + {t("assignment-status-details")} + {modalType === "terkirim" && getModalContent("terkirim")} @@ -860,7 +864,7 @@ export default function FormTaskDetail() {
- +
- +
-
- +
+ - + Semua Pengguna @@ -536,7 +538,7 @@ export default function FormTask() { @@ -614,10 +616,10 @@ export default function FormTask() {
-
- +
+ setMainType(value)} // value={String(mainType)} // onValueChange={(value) => setMainType(Number(value))} @@ -629,8 +631,8 @@ export default function FormTask() {
-
- +
+ setTaskType(String(value))} @@ -643,8 +645,8 @@ export default function FormTask() {
{/* RadioGroup Assignment Category */} -
- +
+ setType(value)} // Mengubah nilai state ketika pilihan berubah @@ -664,8 +666,8 @@ export default function FormTask() {
-
- +
+
{Object.keys(taskOutput).map((key) => (
@@ -704,8 +706,8 @@ export default function FormTask() {
*/} -
- +
+ )}
-
- +
+
- + setVideoFiles(files)} />
-
- +
+ setImageFiles(files)} />
-
- +
+ setTextFiles(files)} />
-
- +
+ -

Voice Note

+

{t("voice-note")}

)}
))} - + {t("add-links")} +
@@ -842,7 +845,7 @@ export default function FormTask() { {/* Submit Button */}
diff --git a/messages/en.json b/messages/en.json index fdb3088c..676beb89 100644 --- a/messages/en.json +++ b/messages/en.json @@ -716,6 +716,26 @@ "output-tugas": "Output Task", "executive-task": "Executive Task", "assignment-type": "Assignment Type", - "description-task": "Description Task" + "description-task": "Description Task", + "form-task": "Form Task", + "assignment-selection": "Assignment Selection", + "custom": "Costum", + "assigment-type": "Assigment Type", + "type-of-task": "Type of Task", + "output-task": "Task Output", + "attachment": "Attachment", + "image": "Image", + "audio-visual": "Audio Visual", + "text": "Text", + "audio": "Audio", + "voice-note": "Voice Note", + "news-links": "News Links", + "add-links": "Add Links", + "remove": "Remove", + "detail-task": "Detail Task", + "sent": "Sent", + "accepted": "Accepted", + "assignment-status-details": "Assignment Status Details", + "unique-code": "Unique Code" } } diff --git a/messages/in.json b/messages/in.json index 5d771382..edaf14cc 100644 --- a/messages/in.json +++ b/messages/in.json @@ -626,7 +626,7 @@ "category": "Kategori", "tag": "Tag", "type-content": "Tipe Konten", - "type-task": "Tipen Penugasan", + "type-task": "Tipe Penugasan", "category-task": "Kategori Penugasan", "code": "Kode", "start-date": "Tanggal Mulai", @@ -716,6 +716,26 @@ "output-tugas": "Output Tugas", "executive-task": "Pelaksana Tugas", "assignment-type": "Jenis Penugasan", - "description-task": "Narasi Penugasan" + "description-task": "Narasi Penugasan", + "form-task": "Form Penugasan", + "assignment-selection": "Pemilihan Tugas", + "custom": "Kostum", + "assigment-type": "Jenis Tugas", + "type-of-task": "Jenis Penugasan", + "output-task": "Output Penugasan", + "attachment": "Lampiran", + "image": "Foto", + "audio-visual": "Video", + "text": "Teks", + "audio": "Audio", + "voice-note": "Catatan Suara", + "news-links": "Link Berita", + "add-links": "Tambah Link", + "remove": "Hapus", + "detail-task": "Detail Task", + "sent": "Terkirim", + "accepted": "Diterima", + "assignment-status-details": "Detail Status Penugasan", + "unique-code": "Kode Unik" } } diff --git a/service/blog/blog.ts b/service/blog/blog.ts index 2fbebc0e..7422d84c 100644 --- a/service/blog/blog.ts +++ b/service/blog/blog.ts @@ -5,7 +5,7 @@ import { } from "../http-config/http-interceptor-service"; export async function paginationBlog( - size: number, + size: any, page: number, title: string = "", categoryFilter: any, diff --git a/service/content/content.ts b/service/content/content.ts index d055655d..af2da4a4 100644 --- a/service/content/content.ts +++ b/service/content/content.ts @@ -46,7 +46,7 @@ export async function listDataAll( } export async function listDataImage( - limit: any, + size: any, page: any, isForSelf: any, isApproval: any, @@ -61,12 +61,12 @@ export async function listDataImage( creatorGroup: string = "" ) { return await httpGetInterceptor( - `media/list?enablePage=1&sortBy=createdAt&sort=desc&size=${limit}&page=${page}&typeId=1&isForSelf=${isForSelf}&isApproval=${isApproval}&categoryId=${categoryFilter}&statusId=${statusFilter}&needApprovalFromLevel=${needApprovalFromLevel}&creatorUserLevelName=${source}&creatorName=${creator}&startDate=${startDate}&endDate=${endDate}&title=${title}&creatorGroupLevelName=${creatorGroup}` + `media/list?enablePage=1&size=${size}&sortBy=createdAt&sort=desc&page=${page}&typeId=1&isForSelf=${isForSelf}&isApproval=${isApproval}&categoryId=${categoryFilter}&statusId=${statusFilter}&needApprovalFromLevel=${needApprovalFromLevel}&creatorUserLevelName=${source}&creatorName=${creator}&startDate=${startDate}&endDate=${endDate}&title=${title}&creatorGroupLevelName=${creatorGroup}` ); } export async function listDataVideo( - limit: any, + size: any, page: any, isForSelf: any, isApproval: any, @@ -81,12 +81,12 @@ export async function listDataVideo( creatorGroup: string = "" ) { return await httpGetInterceptor( - `media/list?enablePage=1&sortBy=createdAt&sort=desc&size=${limit}&page=${page}&typeId=2&isForSelf=${isForSelf}&isApproval=${isApproval}&categoryId=${categoryFilter}&statusId=${statusFilter}&needApprovalFromLevel=${needApprovalFromLevel}&creatorUserLevelName=${source}&creatorName=${creator}&startDate=${startDate}&endDate=${endDate}&title=${title}&creatorGroupLevelName=${creatorGroup}` + `media/list?enablePage=1&sortBy=createdAt&sort=desc&size=${size}&page=${page}&typeId=2&isForSelf=${isForSelf}&isApproval=${isApproval}&categoryId=${categoryFilter}&statusId=${statusFilter}&needApprovalFromLevel=${needApprovalFromLevel}&creatorUserLevelName=${source}&creatorName=${creator}&startDate=${startDate}&endDate=${endDate}&title=${title}&creatorGroupLevelName=${creatorGroup}` ); } export async function listDataTeks( - limit: any, + size: any, page: any, isForSelf: any, isApproval: any, @@ -101,12 +101,12 @@ export async function listDataTeks( creatorGroup: string = "" ) { return await httpGetInterceptor( - `media/list?enablePage=1&sortBy=createdAt&sort=desc&size=${limit}&page=${page}&typeId=3&isForSelf=${isForSelf}&isApproval=${isApproval}&categoryId=${categoryFilter}&statusId=${statusFilter}&needApprovalFromLevel=${needApprovalFromLevel}&creatorUserLevelName=${source}&creatorName=${creator}&startDate=${startDate}&endDate=${endDate}&title=${title}&creatorGroupLevelName=${creatorGroup}` + `media/list?enablePage=1&sortBy=createdAt&sort=desc&size=${size}&page=${page}&typeId=3&isForSelf=${isForSelf}&isApproval=${isApproval}&categoryId=${categoryFilter}&statusId=${statusFilter}&needApprovalFromLevel=${needApprovalFromLevel}&creatorUserLevelName=${source}&creatorName=${creator}&startDate=${startDate}&endDate=${endDate}&title=${title}&creatorGroupLevelName=${creatorGroup}` ); } export async function listDataAudio( - limit: any, + size: any, page: any, isForSelf: any, isApproval: any, @@ -121,7 +121,7 @@ export async function listDataAudio( creatorGroup: string = "" ) { return await httpGetInterceptor( - `media/list?enablePage=1&sortBy=createdAt&sort=desc&size=${limit}&page=${page}&typeId=4&isForSelf=${isForSelf}&isApproval=${isApproval}&categoryId=${categoryFilter}&statusId=${statusFilter}&needApprovalFromLevel=${needApprovalFromLevel}&creatorUserLevelName=${source}&creatorName=${creator}&startDate=${startDate}&endDate=${endDate}&title=${title}&creatorGroupLevelName=${creatorGroup}` + `media/list?enablePage=1&sortBy=createdAt&sort=desc&size=${size}&page=${page}&typeId=4&isForSelf=${isForSelf}&isApproval=${isApproval}&categoryId=${categoryFilter}&statusId=${statusFilter}&needApprovalFromLevel=${needApprovalFromLevel}&creatorUserLevelName=${source}&creatorName=${creator}&startDate=${startDate}&endDate=${endDate}&title=${title}&creatorGroupLevelName=${creatorGroup}` ); } diff --git a/service/contest/contest.ts b/service/contest/contest.ts index de881fd4..9c9c2aeb 100644 --- a/service/contest/contest.ts +++ b/service/contest/contest.ts @@ -3,11 +3,7 @@ import { httpPostInterceptor, } from "../http-config/http-interceptor-service"; -export async function listContest( - title: string = "", - size: number, - page: number -) { +export async function listContest(title: string = "", size: any, page: number) { return await httpGetInterceptor( `contest/pagination?enablePage=1&size=${size}&page=${page}&title=${title}` ); diff --git a/service/schedule/schedule.ts b/service/schedule/schedule.ts index 020433bc..607a94a8 100644 --- a/service/schedule/schedule.ts +++ b/service/schedule/schedule.ts @@ -6,7 +6,7 @@ import { httpGet } from "../http-config/http-base-service"; import { any } from "zod"; export async function paginationSchedule( - size: number, + size: any, page: number, type: any, title: string = ""