"use client"; import { useRouter, useSearchParams } from "next/navigation"; import { useCallback, useEffect, useMemo, useState } from "react"; import SearchResults, { Column } from "../SearchResults"; // import { TeamResult } from "@/app/api/team"; import { useTranslation } from "react-i18next"; import { Button, Stack, Tab, Tabs, TabsProps, Typography } from "@mui/material"; import { CreateTeamInputs, saveTeam } from "@/app/api/team/actions"; import { FieldErrors, FormProvider, SubmitHandler, useForm, useFormContext, } from "react-hook-form"; import { Check, Close, Error } from "@mui/icons-material"; import TeamInfo from "../EditTeam/TeamInfo"; import Allocation from "./Allocation"; import { StaffResult } from "@/app/api/staff"; interface desc { id: number; name: string; description: string; teamLead: number; } interface Props { staff: StaffResult[]; desc: desc[]; // teamLead: StaffResult[] } const EditTeam: React.FC = async ({ staff, desc }) => { // console.log(desc) const { t } = useTranslation(); const formProps = useForm(); const searchParams = useSearchParams(); const idString = searchParams.get("id"); const [filteredItems, setFilteredItems] = useState(); const [allStaffs, setAllStaffs] = useState(); const [filteredDesc, setFilteredDesc] = useState(); const [filteredName, setFilteredName] = useState(); const [teamLead, setTeamLead] = useState(); const [tabIndex, setTabIndex] = useState(0); const router = useRouter(); // const [selectedStaff, setSelectedStaff] = useState( // initialStaffs.filter((s) => getValues("addStaffIds")?.includes(s.id)) // ); const errors = formProps.formState.errors; const handleTabChange = useCallback>( (_e, newValue) => { setTabIndex(newValue); }, [] ); const [serverError, setServerError] = useState(""); const cols = useMemo[]>( () => [ { label: t("Staff Id"), name: "staffId" }, { label: t("Name"), name: "staffName" }, // { label: t("Current Position"), name: "posCode" }, ], [t] ); useEffect(() => { let idList: number[] = [] console.log(desc) if (idString) { const filteredTeam = staff.filter( (item) => { console.log(item) console.log(parseInt(idString)) return (item.teamId === parseInt(idString))} ); console.log(filteredTeam) const tempDesc = desc.filter( (item) => item.id === parseInt(idString) ) // const leader = teamLead.filter( // (staff) => staff.teamId === parseInt(idString) // ) // console.log(leader) console.log(tempDesc[0].teamLead) setTeamLead(tempDesc[0].teamLead) if (filteredTeam.length > 0) { const filteredIds: number[] = filteredTeam.map((i) => ( i.id )) // const teamLead = tempDesc[0].teamLead // const index = filteredIds.indexOf(teamLead); // if (index !== -1) { // filteredIds.splice(index, 1); // filteredIds.unshift(teamLead); // } idList = filteredIds console.log(filteredIds) } console.log(idList) setFilteredItems(filteredTeam); formProps.reset({description: tempDesc[0].description, addStaffIds: idList}) setFilteredDesc(tempDesc[0].description) setFilteredName(tempDesc[0].name) } console.log(staff) setAllStaffs(staff) }, [searchParams]); // useEffect(() => { // console.log(allStaffs) // }, [allStaffs]); const hasErrorsInTab = ( tabIndex: number, errors: FieldErrors ) => { switch (tabIndex) { case 0: return Object.keys(errors).length > 0; default: false; } }; const onSubmit = useCallback>( async (data) => { try { console.log(data); const tempData = { description: data.description, addStaffIds: data.addStaffIds, deleteStaffIds: data.deleteStaffIds, id: parseInt(idString!!) } console.log(tempData) await saveTeam(tempData); router.replace("/settings/team"); } catch (e) { console.log(e); setServerError(t("An error has occurred. Please try again later.")); } }, [router] ); return ( <> {serverError && ( {serverError} )} {t("Edit Team")} - {filteredName} ) : undefined } iconPosition="end" /> {tabIndex === 0 && } {tabIndex === 1 && } ); }; export default EditTeam;