This commit is contained in:
Sabda Yagra 2025-06-25 21:05:02 +07:00
parent 82a4233fb1
commit fbd5586ae6
3 changed files with 104 additions and 66 deletions

View File

@ -164,8 +164,8 @@ const TableImage = () => {
setSelectedCategories( setSelectedCategories(
(prev: any) => (prev: any) =>
prev.includes(categoryId) prev.includes(categoryId)
? prev.filter((id: any) => id !== categoryId) // Hapus jika sudah dipilih ? prev.filter((id: any) => id !== categoryId)
: [...prev, categoryId] // Tambahkan jika belum dipilih : [...prev, categoryId]
); );
// Perbarui filter kategori // Perbarui filter kategori
@ -199,8 +199,8 @@ const TableImage = () => {
statusFilter?.sort().join(",").includes("1") ? userLevelId : "", statusFilter?.sort().join(",").includes("1") ? userLevelId : "",
filterByCreator, filterByCreator,
filterBySource, filterBySource,
formattedStartDate, // Pastikan format sesuai formattedStartDate,
formattedEndDate, // Pastikan format sesuai formattedEndDate,
search, search,
filterByCreatorGroup, filterByCreatorGroup,
locale == "en" locale == "en"
@ -221,16 +221,16 @@ const TableImage = () => {
} }
const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => { const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => {
setSearch(e.target.value); // Perbarui state search setSearch(e.target.value);
table.getColumn("judul")?.setFilterValue(e.target.value); // Set filter tabel table.getColumn("judul")?.setFilterValue(e.target.value);
}; };
const handleSearchFilterBySource = ( const handleSearchFilterBySource = (
e: React.ChangeEvent<HTMLInputElement> e: React.ChangeEvent<HTMLInputElement>
) => { ) => {
const value = e.target.value; const value = e.target.value;
setFilterBySource(value); // Perbarui state filter setFilterBySource(value);
fetchData(); // Panggil ulang data dengan filter baru fetchData();
}; };
function handleStatusCheckboxChange(value: any) { function handleStatusCheckboxChange(value: any) {
@ -245,8 +245,8 @@ const TableImage = () => {
e: React.ChangeEvent<HTMLInputElement> e: React.ChangeEvent<HTMLInputElement>
) => { ) => {
const value = e.target.value; const value = e.target.value;
setFilterByCreator(value); // Perbarui state filter setFilterByCreator(value);
fetchData(); // Panggil ulang data dengan filter baru fetchData();
}; };
return ( return (

View File

@ -12,6 +12,9 @@ import {
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";
import { format } from "date-fns"; import { format } from "date-fns";
import { Link } from "@/i18n/routing"; import { Link } from "@/i18n/routing";
import Swal from "sweetalert2";
import { deleteMedia } from "@/service/content/content";
import { error, success } from "@/config/swal";
const userLevelId = getCookiesDecrypt("ulie"); const userLevelId = getCookiesDecrypt("ulie");
@ -193,6 +196,38 @@ const columns: ColumnDef<any>[] = [
fileTypeSegment = row.original.fileTypeId; // Fallback jika tidak ada yang cocok fileTypeSegment = row.original.fileTypeId; // Fallback jika tidak ada yang cocok
} }
async function doDelete(id: any) {
// loading();
const data = {
id,
};
const response = await deleteMedia(data);
if (response?.error) {
error(response.message);
return false;
}
Swal.fire("Berhasil", "Konten telah dihapus.", "success");
window.location.reload();
}
const handleDeleteMedia = (id: any) => {
Swal.fire({
title: "Hapus Data",
text: "",
icon: "warning",
showCancelButton: true,
cancelButtonColor: "#3085d6",
confirmButtonColor: "#d33",
confirmButtonText: "Hapus",
}).then((result) => {
if (result.isConfirmed) {
doDelete(id);
}
});
};
return ( return (
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger asChild> <DropdownMenuTrigger asChild>
@ -214,7 +249,10 @@ const columns: ColumnDef<any>[] = [
Lihat Lihat
</DropdownMenuItem> </DropdownMenuItem>
</Link> </Link>
<DropdownMenuItem className="p-2 border-b text-destructive bg-destructive/30 focus:bg-destructive focus:text-destructive-foreground rounded-none"> <DropdownMenuItem
onClick={() => handleDeleteMedia(row.original.id)}
className="p-2 border-b text-destructive bg-destructive/30 focus:bg-destructive focus:text-destructive-foreground rounded-none"
>
<Trash2 className="w-4 h-4 me-1.5" /> <Trash2 className="w-4 h-4 me-1.5" />
Hapus Hapus
</DropdownMenuItem> </DropdownMenuItem>
@ -222,7 +260,7 @@ const columns: ColumnDef<any>[] = [
</DropdownMenu> </DropdownMenu>
); );
}, },
}, },
]; ];
export default columns; export default columns;

View File

@ -165,8 +165,8 @@ const ContentTable = () => {
} }
const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => { const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => {
setSearch(e.target.value); // Perbarui state search setSearch(e.target.value);
table.getColumn("judul")?.setFilterValue(e.target.value); // Set filter tabel table.getColumn("judul")?.setFilterValue(e.target.value);
}; };
return ( return (
@ -216,8 +216,8 @@ const ContentTable = () => {
<SelectContent> <SelectContent>
<SelectGroup> <SelectGroup>
<SelectLabel>Filter</SelectLabel> <SelectLabel>Filter</SelectLabel>
<SelectItem value="1">Image</SelectItem> <SelectItem value="1">Foto</SelectItem>
<SelectItem value="2">Video</SelectItem> <SelectItem value="2">Audio Visual</SelectItem>
<SelectItem value="3">Teks</SelectItem> <SelectItem value="3">Teks</SelectItem>
<SelectItem value="4">Audio</SelectItem> <SelectItem value="4">Audio</SelectItem>
</SelectGroup> </SelectGroup>