171 lines
6.5 KiB
TypeScript
171 lines
6.5 KiB
TypeScript
|
|
"use client";
|
||
|
|
import { Button } from "@/components/ui/button";
|
||
|
|
import { Collapsible, CollapsibleContent } from "@/components/ui/collapsible";
|
||
|
|
import {
|
||
|
|
DropdownMenu,
|
||
|
|
DropdownMenuContent,
|
||
|
|
DropdownMenuItem,
|
||
|
|
DropdownMenuTrigger,
|
||
|
|
} from "@/components/ui/dropdown-menu";
|
||
|
|
import { close, loading } from "@/config/swal";
|
||
|
|
import { Link } from "@/i18n/routing";
|
||
|
|
import {
|
||
|
|
getPlanningDailyByTypeId,
|
||
|
|
getPlanningPagination,
|
||
|
|
} from "@/service/agenda-setting/agenda-setting";
|
||
|
|
import { htmlToString, textEllipsis } from "@/utils/globals";
|
||
|
|
import { MoreVertical } from "lucide-react";
|
||
|
|
import { useEffect, useState } from "react";
|
||
|
|
|
||
|
|
export default function ExpandedData(props: { datas: any }) {
|
||
|
|
const { datas } = props;
|
||
|
|
const [isOpen, setIsOpen] = useState("");
|
||
|
|
const [getData, setGetData] = useState<any>();
|
||
|
|
|
||
|
|
const handleIsOpen = (id: string) => {
|
||
|
|
setIsOpen(id);
|
||
|
|
};
|
||
|
|
|
||
|
|
useEffect(() => {
|
||
|
|
if (isOpen !== "") {
|
||
|
|
fetchData();
|
||
|
|
}
|
||
|
|
}, [isOpen]);
|
||
|
|
|
||
|
|
async function fetchData() {
|
||
|
|
loading();
|
||
|
|
const response = await getPlanningPagination(0, "", 10, 1, 1, isOpen);
|
||
|
|
|
||
|
|
close();
|
||
|
|
setupData(response.data?.data);
|
||
|
|
}
|
||
|
|
|
||
|
|
function setupData(rawData: any) {
|
||
|
|
if (rawData != undefined) {
|
||
|
|
const dataContent = rawData?.content;
|
||
|
|
const data = [];
|
||
|
|
|
||
|
|
for (const [i, element] of dataContent.entries()) {
|
||
|
|
element.no = i + 1;
|
||
|
|
data.push(element);
|
||
|
|
}
|
||
|
|
|
||
|
|
setGetData(data);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return (
|
||
|
|
<table>
|
||
|
|
<tr>
|
||
|
|
<th className="text-left">Judul Perencanaan</th>
|
||
|
|
<th>Batas Waktu</th>
|
||
|
|
<th>Status</th>
|
||
|
|
<th>Aksi</th>
|
||
|
|
</tr>
|
||
|
|
{datas?.map((data: any) => (
|
||
|
|
<>
|
||
|
|
<tr key={data.id}>
|
||
|
|
<th className="text-left font-normal text-sm">
|
||
|
|
<a onClick={() => handleIsOpen(data.id)}>{data.title}</a>
|
||
|
|
</th>
|
||
|
|
<th
|
||
|
|
className="font-normal text-sm"
|
||
|
|
onClick={() =>
|
||
|
|
`disinni igninn membuat state untuk mennyimpan data isOpen`
|
||
|
|
}
|
||
|
|
>
|
||
|
|
{data.date}
|
||
|
|
</th>
|
||
|
|
<th className="font-normal text-sm">{data.status}</th>
|
||
|
|
<th className="flex justify-center text-sm">
|
||
|
|
<DropdownMenu>
|
||
|
|
<DropdownMenuTrigger asChild>
|
||
|
|
<Button
|
||
|
|
size="icon"
|
||
|
|
className="bg-transparent ring-offset-transparent hover:bg-transparent hover:ring-0 hover:ring-transparent"
|
||
|
|
>
|
||
|
|
<MoreVertical className="h-4 w-4 text-default-800" />
|
||
|
|
</Button>
|
||
|
|
</DropdownMenuTrigger>
|
||
|
|
<DropdownMenuContent className="p-0" align="end">
|
||
|
|
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
||
|
|
<Link
|
||
|
|
href={`/curator/task-plan/mediahub/create-daily/detail/${data.id}`}
|
||
|
|
>
|
||
|
|
Detail
|
||
|
|
</Link>
|
||
|
|
</DropdownMenuItem>
|
||
|
|
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
||
|
|
<Link
|
||
|
|
href={`/curator/task-plan/mediahub/create-daily/edit/${data.id}`}
|
||
|
|
>
|
||
|
|
Edit
|
||
|
|
</Link>
|
||
|
|
</DropdownMenuItem>
|
||
|
|
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
||
|
|
<a className="text-red-600">Delete</a>
|
||
|
|
</DropdownMenuItem>
|
||
|
|
</DropdownMenuContent>
|
||
|
|
</DropdownMenu>
|
||
|
|
</th>
|
||
|
|
</tr>
|
||
|
|
<Collapsible
|
||
|
|
open={isOpen === data.id}
|
||
|
|
onOpenChange={() => handleIsOpen(data.id)}
|
||
|
|
>
|
||
|
|
<CollapsibleContent className="space-y-2 w-full text-xs">
|
||
|
|
<tr className="space-x-2">
|
||
|
|
<th className="px-3">No</th>
|
||
|
|
<th className="text-left">Judul Perencanaan</th>
|
||
|
|
<th className="text-left px-3">Nama Pembuat</th>
|
||
|
|
<th className="text-left px-3">Batas Waktu</th>
|
||
|
|
<th className="text-left px-3">Status</th>
|
||
|
|
<th>Aksi</th>
|
||
|
|
</tr>
|
||
|
|
{getData?.map((row: any) => (
|
||
|
|
<tr key={row.id}>
|
||
|
|
<td className="px-3">{row.no}</td>
|
||
|
|
<td>{row.title}</td>
|
||
|
|
<td className="text-left px-3">{row.createdByName}</td>
|
||
|
|
<td className="text-left px-3">{row.date}</td>
|
||
|
|
<td className="text-left px-3">{row.status}</td>
|
||
|
|
<td className="flex justify-center text-sm">
|
||
|
|
<DropdownMenu>
|
||
|
|
<DropdownMenuTrigger asChild>
|
||
|
|
<Button
|
||
|
|
size="icon"
|
||
|
|
className="bg-transparent ring-offset-transparent hover:bg-transparent hover:ring-0 hover:ring-transparent"
|
||
|
|
>
|
||
|
|
<MoreVertical className="h-4 w-4 text-default-800" />
|
||
|
|
</Button>
|
||
|
|
</DropdownMenuTrigger>
|
||
|
|
<DropdownMenuContent className="p-0" align="end">
|
||
|
|
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
||
|
|
<Link
|
||
|
|
href={`/curator/task-plan/mediahub/create-weekly/detail/${data.id}`}
|
||
|
|
>
|
||
|
|
Detail
|
||
|
|
</Link>
|
||
|
|
</DropdownMenuItem>
|
||
|
|
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
||
|
|
<Link
|
||
|
|
href={`/curator/task-plan/mediahub/create-weekly/edit/${data.id}`}
|
||
|
|
>
|
||
|
|
Edit
|
||
|
|
</Link>
|
||
|
|
</DropdownMenuItem>
|
||
|
|
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
||
|
|
<a className="text-red-600">Delete</a>
|
||
|
|
</DropdownMenuItem>
|
||
|
|
</DropdownMenuContent>
|
||
|
|
</DropdownMenu>
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
))}
|
||
|
|
</CollapsibleContent>
|
||
|
|
</Collapsible>
|
||
|
|
</>
|
||
|
|
))}
|
||
|
|
</table>
|
||
|
|
);
|
||
|
|
}
|