fixing
This commit is contained in:
parent
82a4233fb1
commit
fbd5586ae6
|
|
@ -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 (
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
|
||||||
|
|
@ -168,61 +171,96 @@ const columns: ColumnDef<any>[] = [
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "actions",
|
id: "actions",
|
||||||
accessorKey: "action",
|
accessorKey: "action",
|
||||||
header: "Actions",
|
header: "Actions",
|
||||||
enableHiding: false,
|
enableHiding: false,
|
||||||
cell: ({ row }) => {
|
cell: ({ row }) => {
|
||||||
// Menentukan segmen path berdasarkan fileTypeId
|
// Menentukan segmen path berdasarkan fileTypeId
|
||||||
let fileTypeSegment;
|
let fileTypeSegment;
|
||||||
switch (row.original.fileTypeId) {
|
switch (row.original.fileTypeId) {
|
||||||
case 1:
|
case 1:
|
||||||
fileTypeSegment = "image";
|
fileTypeSegment = "image";
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
fileTypeSegment = "video";
|
fileTypeSegment = "video";
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
fileTypeSegment = "teks"; // Asumsi 'teks' untuk fileTypeId 3
|
fileTypeSegment = "teks"; // Asumsi 'teks' untuk fileTypeId 3
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
fileTypeSegment = "audio"; // Asumsi 'audio' untuk fileTypeId 4
|
fileTypeSegment = "audio"; // Asumsi 'audio' untuk fileTypeId 4
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fileTypeSegment = row.original.fileTypeId; // Fallback jika tidak ada yang cocok
|
fileTypeSegment = row.original.fileTypeId; // Fallback jika tidak ada yang cocok
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
async function doDelete(id: any) {
|
||||||
<DropdownMenu>
|
// loading();
|
||||||
<DropdownMenuTrigger asChild>
|
const data = {
|
||||||
<Button
|
id,
|
||||||
size="icon"
|
};
|
||||||
className="bg-transparent ring-offset-transparent hover:bg-transparent hover:ring-0 hover:ring-transparent"
|
|
||||||
>
|
const response = await deleteMedia(data);
|
||||||
<span className="sr-only">Buka menu</span>
|
|
||||||
<MoreVertical className="h-4 w-4 text-default-800" />
|
if (response?.error) {
|
||||||
</Button>
|
error(response.message);
|
||||||
</DropdownMenuTrigger>
|
return false;
|
||||||
<DropdownMenuContent className="p-0" align="end">
|
}
|
||||||
{/* Link "View" yang diperbarui dengan logika kondisional untuk fileTypeSegment */}
|
Swal.fire("Berhasil", "Konten telah dihapus.", "success");
|
||||||
<Link
|
window.location.reload();
|
||||||
href={`/contributor/content/${fileTypeSegment}/detail/${row.original.id}`}
|
}
|
||||||
>
|
|
||||||
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
const handleDeleteMedia = (id: any) => {
|
||||||
<Eye className="w-4 h-4 me-1.5" />
|
Swal.fire({
|
||||||
Lihat
|
title: "Hapus Data",
|
||||||
|
text: "",
|
||||||
|
icon: "warning",
|
||||||
|
showCancelButton: true,
|
||||||
|
cancelButtonColor: "#3085d6",
|
||||||
|
confirmButtonColor: "#d33",
|
||||||
|
confirmButtonText: "Hapus",
|
||||||
|
}).then((result) => {
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
doDelete(id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<DropdownMenu>
|
||||||
|
<DropdownMenuTrigger asChild>
|
||||||
|
<Button
|
||||||
|
size="icon"
|
||||||
|
className="bg-transparent ring-offset-transparent hover:bg-transparent hover:ring-0 hover:ring-transparent"
|
||||||
|
>
|
||||||
|
<span className="sr-only">Buka menu</span>
|
||||||
|
<MoreVertical className="h-4 w-4 text-default-800" />
|
||||||
|
</Button>
|
||||||
|
</DropdownMenuTrigger>
|
||||||
|
<DropdownMenuContent className="p-0" align="end">
|
||||||
|
{/* Link "View" yang diperbarui dengan logika kondisional untuk fileTypeSegment */}
|
||||||
|
<Link
|
||||||
|
href={`/contributor/content/${fileTypeSegment}/detail/${row.original.id}`}
|
||||||
|
>
|
||||||
|
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
||||||
|
<Eye className="w-4 h-4 me-1.5" />
|
||||||
|
Lihat
|
||||||
|
</DropdownMenuItem>
|
||||||
|
</Link>
|
||||||
|
<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" />
|
||||||
|
Hapus
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
</Link>
|
</DropdownMenuContent>
|
||||||
<DropdownMenuItem className="p-2 border-b text-destructive bg-destructive/30 focus:bg-destructive focus:text-destructive-foreground rounded-none">
|
</DropdownMenu>
|
||||||
<Trash2 className="w-4 h-4 me-1.5" />
|
);
|
||||||
Hapus
|
},
|
||||||
</DropdownMenuItem>
|
|
||||||
</DropdownMenuContent>
|
|
||||||
</DropdownMenu>
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export default columns;
|
export default columns;
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue