"use client"; import { LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global"; import { Avatar, Box, Button, Center, Divider, Flex, Grid, Group, Input, rem, SimpleGrid, Stack, Text, TextInput } from "@mantine/core"; import { useParams, useRouter } from "next/navigation"; import React, { useRef, useState } from "react"; import { IoIosArrowDropright } from "react-icons/io"; import { BsFiletypeCsv } from "react-icons/bs"; import CreateUsersProject from "./create_users_project"; import ResultsDateAndTask from "./results_date-and_task"; import ResultsFile from "./results_file"; import { useHookstate } from "@hookstate/core"; import { globalMemberTask } from "../lib/val_task"; import ViewDateEndTask from "./create_date_end_task"; import { IFormDateTask, IFormMemberTask, IListFileTask } from "../lib/type_task"; import { Dropzone } from '@mantine/dropzone'; import toast from "react-hot-toast"; import _ from "lodash"; import { FaTrash } from "react-icons/fa6"; import LayoutModal from "@/module/_global/layout/layout_modal"; import { funCreateTask } from "../lib/api_task"; export default function CreateTask() { const router = useRouter() const param = useParams<{ id: string }>() const [openDrawer, setOpenDrawer] = useState(false) const [openDrawerFile, setOpenDrawerFile] = useState(false) const [openDrawerTask, setOpenDrawerTask] = useState(false) const [openMember, setOpenMember] = useState(false) const [openTugas, setOpenTugas] = useState(false) const [openModal, setOpenModal] = useState(false) const member = useHookstate(globalMemberTask) const memberValue = member.get() as IFormMemberTask[] const [dataTask, setDataTask] = useState([]) const openRef = useRef<() => void>(null) const [fileForm, setFileForm] = useState([]) const [imgForm, setImgForm] = useState() const [listFile, setListFile] = useState([]) const [indexDelFile, setIndexDelFile] = useState(0) const [indexDelTask, setIndexDelTask] = useState(0) const [title, setTitle] = useState("") const [touched, setTouched] = useState({ title: false, task: false, member: false }); function deleteFile(index: number) { setListFile([...listFile.filter((val, i) => i !== index)]) setFileForm([...fileForm.filter((val, i) => i !== index)]) setOpenDrawerFile(false) } function deleteTask(index: number) { setDataTask([...dataTask.filter((val, i) => i !== index)]) setOpenDrawerTask(false) } async function onSubmit() { try { const fd = new FormData(); for (let i = 0; i < fileForm.length; i++) { fd.append(`file${i}`, fileForm[i]); } fd.append("data", JSON.stringify({ idDivision: param.id, title, task: dataTask, member: memberValue })) const response = await funCreateTask(fd) if (response.success) { toast.success(response.message) // setTitle("") member.set([]) setFileForm([]) setListFile([]) setDataTask([]) router.push(`/division/${param.id}/task/`) } else { toast.error(response.message) } } catch (error) { console.log(error) toast.error("Gagal menambahkan tugas divisi, coba lagi nanti"); } } if (openTugas) return { setDataTask([...dataTask, val]) setOpenTugas(false) }} />; if (openMember) return setOpenMember(false)} /> return ( { setTitle(e.target.value) setTouched({ ...touched, title: false }) }} onBlur={() => setTouched({ ...touched, title: true })} required error={ touched.title && ( title == "" ? "Nama Tidak Boleh Kosong" : null ) } /> { setOpenTugas(true) }}> Tambah Tanggal & Tugas setOpenDrawer(true)} > Upload File setOpenMember(true)}> Tambah Anggota { dataTask.length > 0 && Tanggal & Tugas { dataTask.map((v, i) => { return ( { setIndexDelTask(i) setOpenDrawerTask(true) }}> ) }) } } { listFile.length > 0 && File { listFile.map((v, i) => { return ( { setIndexDelFile(i) setOpenDrawerFile(true) }}> ) }) } } { member.length > 0 && Anggota Terpilih Total {member.length} Anggota {member.get().map((v: any, i: any) => { return ( {v.name} Anggota ); })} } {/* Drawer pilih file */} setOpenDrawer(false)} title={"Pilih File"} > { if (!files || _.isEmpty(files)) return toast.error('Tidak ada file yang dipilih') setFileForm([...fileForm, files[0]]) setListFile([...listFile, { name: files[0].name, extension: files[0].type.split("/")[1] }]) }} activateOnClick={false} maxSize={3 * 1024 ** 2} accept={['text/csv', 'image/png', 'image/jpeg', 'image/heic', 'application/pdf']} onReject={(files) => { return toast.error('File yang diizinkan: .csv, .png, .jpg, .heic, .pdf dengan ukuran maksimal 3 MB') }} > openRef.current?.()}>
Pilih file diperangkat
{/* router.push("/task/create?page=file-save")}>
Pilih file yang sudah ada
*/}
{/* Drawer hapus file */} setOpenDrawerFile(false)} title={""} > deleteFile(indexDelFile)}> Hapus File {/* Drawer hapus tugas */} setOpenDrawerTask(false)} title={""} > deleteTask(indexDelTask)}> Hapus Tugas setOpenModal(false)} description="Apakah Anda yakin ingin menambahkan data?" onYes={(val) => { if (val) { onSubmit() } setOpenModal(false) }} />
); }