"use client"; import React, { useEffect, useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Card } from "@/components/ui/card"; import { ChevronLeft, ChevronRight } from "lucide-react"; import { listDataAllNonPagination, listDataTracking, mediaTrackingSave, } from "@/service/media-tracking/media-tracking"; import { error } from "@/lib/swal"; import { toast } from "sonner"; import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { PaginationState } from "@tanstack/react-table"; import page from "../page"; import CustomPagination from "@/components/table/custom-pagination"; import { close, loading } from "@/config/swal"; export default function TrackingBeritaCard() { const [search, setSearch] = useState(""); const [content, setContent] = useState([]); const [selectedItems, setSelectedItems] = useState([]); const [page, setPage] = useState(1); const [totalPage, setTotalPage] = useState(1); const [showData, setShowData] = useState("6"); useEffect(() => { initFecth(); }, [showData, page]); const initFecth = async () => { loading(); const response = await listDataTracking(showData, page - 1); const data = response?.data?.data; const newData = data?.content; setTotalPage(data?.totalPages || 1); newData.forEach((item: any, index: number) => { item.no = (page - 1) * Number(showData) + index + 1; }); setContent(response?.data?.data?.content || []); close(); }; const fecthAll = async (keyword: string) => { const response = await listDataAllNonPagination(keyword); setContent(response?.data?.data?.content || []); }; const handleInputChange = (e: React.ChangeEvent) => { const value = e.target.value; setSearch(value); if (value.trim() === "") { initFecth(); } else { fecthAll(value); } }; const handleSelect = (id: number) => { setSelectedItems((prev) => prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id] ); }; const doSave = async () => { if (selectedItems.length === 0) { toast("Pilih minimal 1 berita untuk disimpan."); return; } try { const promises = selectedItems.map((id) => mediaTrackingSave({ mediaUploadId: id, duration: 24, scrapingPeriod: 3, }) ); await Promise.all(promises); toast("Berhasil Menambahkan", { description: "", }); setSelectedItems([]); initFecth(); } catch (err: any) { error(err?.message || "Gagal menyimpan data."); } }; return (
1 - 6 Data 1 - 12 Data 1 - 60 Data 1 - 120 Data
{selectedItems.length > 0 && (
{selectedItems.length} Item Terpilih{" "} / Tracking Berita tersisa {29 - selectedItems.length}
)}
{content?.length > 1 && content.map((item: any) => ( handleSelect(item.id)} > {item.title}
{selectedItems.includes(item.id) && (
)}

{item.title}

))}
{content && content?.length > 0 ? ( setPage(data)} /> ) : (

No Data

)}
); }