From 0ad1acee094d9758a4289b7becaacdb94d24e30d Mon Sep 17 00:00:00 2001 From: Sabda Yagra Date: Fri, 9 Jan 2026 18:35:20 +0700 Subject: [PATCH] fix: button relevant in media tracking and table --- .../detail/component/column.tsx | 49 ++++++++++++++--- .../media-tracking/detail/component/table.tsx | 5 +- .../results/component/column.tsx | 38 ++++++------- .../agenda-setting/event-modal.tsx | 1 - service/media-tracking/media-tracking.ts | 53 +++++++++++-------- src/types/react-table.d.ts | 1 + 6 files changed, 98 insertions(+), 49 deletions(-) diff --git a/app/[locale]/(protected)/admin/media-tracking/detail/component/column.tsx b/app/[locale]/(protected)/admin/media-tracking/detail/component/column.tsx index 866579b5..a7094d30 100644 --- a/app/[locale]/(protected)/admin/media-tracking/detail/component/column.tsx +++ b/app/[locale]/(protected)/admin/media-tracking/detail/component/column.tsx @@ -89,7 +89,8 @@ const columns: ColumnDef[] = [ cell: ({ row, table }) => { const original = row.original; - const isValid = original.isValid; + // const isValid = original.isValid; + const isRelevant = original.isRelevant; const link = original.link; const updateRow = (data: Partial) => { @@ -99,10 +100,10 @@ const columns: ColumnDef[] = [ const handleValid = async () => { try { await validateMediaLink(original.id, true); - updateRow({ - isValid: true, + isRelevant: true, }); + table.options.meta?.refetchData?.(); } catch (err: any) { toast.error(err.message); } @@ -113,8 +114,9 @@ const columns: ColumnDef[] = [ await validateMediaLink(original.id, false); updateRow({ - isValid: false, + isRelevant: false, }); + table.options.meta?.refetchData?.(); } catch (err: any) { toast.error(err.message); } @@ -124,24 +126,55 @@ const columns: ColumnDef[] = [ return -; } - if (isValid === true) { + if (isRelevant === true) { return ( ); } return (
- -
diff --git a/app/[locale]/(protected)/admin/media-tracking/detail/component/table.tsx b/app/[locale]/(protected)/admin/media-tracking/detail/component/table.tsx index fa0ae7c0..670d9269 100644 --- a/app/[locale]/(protected)/admin/media-tracking/detail/component/table.tsx +++ b/app/[locale]/(protected)/admin/media-tracking/detail/component/table.tsx @@ -124,6 +124,9 @@ const NewsDetailTable = () => { ) ); }, + refetchData: () => { + fetchData(); + }, }, state: { sorting, @@ -163,7 +166,7 @@ const NewsDetailTable = () => { pageIndex: 0, pageSize: Number(showData), }); - }, [page, showData]); + }, [page, showData, id]); async function fetchData() { try { diff --git a/app/[locale]/(protected)/admin/media-tracking/results/component/column.tsx b/app/[locale]/(protected)/admin/media-tracking/results/component/column.tsx index a5aa31cb..bcee9b65 100644 --- a/app/[locale]/(protected)/admin/media-tracking/results/component/column.tsx +++ b/app/[locale]/(protected)/admin/media-tracking/results/component/column.tsx @@ -52,32 +52,34 @@ const columns: ColumnDef[] = [ header: "Judul", cell: ({ row }) => {row.getValue("title")}, }, - // { - // accessorKey: "resultTotal", - // header: () =>
Jumlah Amplifikasi
, - // cell: ({ row }) => { - // const value = row.getValue("resultTotal") as number | string | null; + { + accessorKey: "resultTotal", + header: () =>
Total Artikel
, + cell: ({ row }) => { + const value = row.getValue("resultTotal") as number | string | null; - // const finalValue = - // value === null || value === undefined || value === "" - // ? 0 - // : Number(value); + const finalValue = + value === null || value === undefined || value === "" + ? 0 + : Number(value); - // return
{finalValue}
; - // }, - // }, + return
{finalValue}
; + }, + }, { accessorKey: "amplification", header: () =>
Jumlah Amplifikasi
, cell: ({ row }) => { - const totalRaw = row.getValue("amplification") as number | string | null; + const raw = row.getValue("amplification") as string | null; - const total = - totalRaw === null || totalRaw === undefined || totalRaw === "" - ? 0 - : Number(totalRaw); + let total = 0; + let invalidTotal = 0; - const invalidTotal = 0; + if (raw && typeof raw === "string") { + const parts = raw.split("/").map((v) => v.trim()); + total = Number(parts[0]) || 0; + invalidTotal = Number(parts[1]) || 0; + } return (
diff --git a/app/[locale]/(protected)/contributor/agenda-setting/event-modal.tsx b/app/[locale]/(protected)/contributor/agenda-setting/event-modal.tsx index 7382f25c..93e5c60d 100644 --- a/app/[locale]/(protected)/contributor/agenda-setting/event-modal.tsx +++ b/app/[locale]/(protected)/contributor/agenda-setting/event-modal.tsx @@ -894,7 +894,6 @@ const EventModal = ({ const resCsrf = await getCsrfToken(); const csrfToken = resCsrf?.data?.token; - console.log("CSRF TOKEN : ", csrfToken); const headers = { "X-XSRF-TOKEN": csrfToken, }; diff --git a/service/media-tracking/media-tracking.ts b/service/media-tracking/media-tracking.ts index e3874a3b..0841c6b0 100644 --- a/service/media-tracking/media-tracking.ts +++ b/service/media-tracking/media-tracking.ts @@ -2,6 +2,7 @@ import api from "@/src/lib/api"; import { httpGetInterceptor, httpPostInterceptor, + httpPutInterceptor, } from "../http-config/http-interceptor-service"; export async function getMediaTrackingMonitoring(page: number, size: number) { @@ -63,31 +64,41 @@ export async function listDataTracking( ); } - export async function listDataAllNonPagination(search: string) { return await httpGetInterceptor( `media/public/list?enablePage=0&sort=desc&title=${search || ""}` ); } -export const validateMediaLink = async ( - resultId: number, - isRelevant: boolean -) => { - try { - const res = await api.put( - "/media/tracking/monitoring/results/relevant", - { - resultId, - isRelevant, - } - ); +export async function validateMediaLink(resultId: number, isRelevant: boolean) { + const url = "media/tracking/monitoring/results/relevant"; - return res.data; - } catch (error: any) { - throw new Error( - error?.response?.data?.messages?.[0] || - "Gagal memperbarui status relevansi" - ); - } -}; \ No newline at end of file + const payload = { + resultId, + isRelevant, + }; + + return httpPutInterceptor(url, payload); +} + +// export const validateMediaLink = async ( +// resultId: number, +// isRelevant: boolean +// ) => { +// try { +// const res = await api.put( +// "/media/tracking/monitoring/results/relevant", +// { +// resultId, +// isRelevant, +// } +// ); + +// return res.data; +// } catch (error: any) { +// throw new Error( +// error?.response?.data?.messages?.[0] || +// "Gagal memperbarui status relevansi" +// ); +// } +// }; diff --git a/src/types/react-table.d.ts b/src/types/react-table.d.ts index 682a93a0..5e8e7154 100644 --- a/src/types/react-table.d.ts +++ b/src/types/react-table.d.ts @@ -4,5 +4,6 @@ import "@tanstack/react-table"; declare module "@tanstack/react-table" { interface TableMeta { updateData: (rowIndex: number, value: Partial) => void; + refetchData?: () => void; } }