"use client"; import { useCallback, useEffect, useMemo, useState } from "react"; import { useRouter, useSearchParams } from "next/navigation"; import { useTranslation } from "react-i18next"; import { FormProvider, SubmitErrorHandler, SubmitHandler, useForm, } from "react-hook-form"; import { Box, Button, Grid, Link, Stack, Tab, Tabs, TabsProps, Typography, } from "@mui/material"; import { Add, Check, Close, EditNote } from "@mui/icons-material"; import DetailInfoCard from "@/components/RoughScheduleDetail/DetailInfoCard"; import ViewByFGDetails from "@/components/RoughScheduleDetail/ViewByFGDetails"; import ViewByBomDetails from "@/components/RoughScheduleDetail/ViewByBomDetails"; import { RoughProdScheduleResult, ScheduleType } from "@/app/api/scheduling"; import { arrayToDayjs, dayjsToDateString } from "@/app/utils/formatUtil"; import { useGridApiRef } from "@mui/x-data-grid"; type Props = { isEditMode: boolean; type: ScheduleType; defaultValues: Partial | undefined; // qcChecks: ItemQc[] }; const RoughScheduleDetailView: React.FC = ({ isEditMode, type, defaultValues, }) => { // console.log(type) const apiRef = useGridApiRef(); const params = useSearchParams(); const [serverError, setServerError] = useState(""); const [tabIndex, setTabIndex] = useState(0); const { t } = useTranslation("schedule"); const router = useRouter(); const [isEdit, setIsEdit] = useState(false); //const title = "Demand Forecast Detail" // console.log(typeId) const formProps = useForm({ defaultValues: defaultValues ? defaultValues : {}, }); const errors = formProps.formState.errors; const handleTabChange = useCallback>( (_e, newValue) => { setTabIndex(newValue); }, [], ); const dayPeriod = useMemo(() => { const from = arrayToDayjs(formProps.getValues("schedulePeriod")); const to = arrayToDayjs(formProps.getValues("schedulePeriodTo")); const diffDays = Math.abs(from.diff(to, "day")); const result: string[] = []; for (let i = 0; i <= diffDays; i++) { result.push(dayjsToDateString(from.add(i, "day"))); } return result; }, []); const [pagingController, setPagingController] = useState({ pageNum: 1, pageSize: 10, totalCount: 0, }); const handleCancel = () => { router.replace(`/scheduling/rough`); }; const onSubmit = useCallback>( async (data, event) => { const hasErrors = false; console.log(errors); // console.log(apiRef.current.getCellValue(2, "lowerLimit")) // apiRef.current. try { if (hasErrors) { setServerError(t("An error has occurred. Please try again later.")); return false; } } catch (e) { // backend error setServerError(t("An error has occurred. Please try again later.")); console.log(e); } }, [apiRef, router, t], ); // multiple tabs const onSubmitError = useCallback< SubmitErrorHandler >((errors) => {}, []); const onClickEdit = () => { setIsEdit(!isEdit); }; return ( <> {/**/} {/* */} {/* {t(`${mode} ${title}`)}*/} {/* */} {/**/} {/* */} {serverError && ( {serverError} )} {tabIndex === 0 && ( )} {tabIndex === 1 && ( )} {/* */} ); }; export default RoughScheduleDetailView;