import React, { useState, useRef, useEffect, useMemo } from "react"; 
 | 
import { 
 | 
    Edit, 
 | 
    SimpleForm, 
 | 
    FormDataConsumer, 
 | 
    useTranslate, 
 | 
    TextInput, 
 | 
    NumberInput, 
 | 
    BooleanInput, 
 | 
    DateInput, 
 | 
    SelectInput, 
 | 
    ReferenceInput, 
 | 
    ReferenceArrayInput, 
 | 
    AutocompleteInput, 
 | 
    SaveButton, 
 | 
    Toolbar, 
 | 
    Labeled, 
 | 
    NumberField, 
 | 
    required, 
 | 
    useRecordContext, 
 | 
    DeleteButton, 
 | 
} from 'react-admin'; 
 | 
import { useWatch, useFormContext } from "react-hook-form"; 
 | 
import { Stack, Grid, Box, Typography } from '@mui/material'; 
 | 
import * as Common from '@/utils/common'; 
 | 
import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; 
 | 
import EditBaseAside from "../components/EditBaseAside"; 
 | 
import CustomerTopToolBar from "../components/EditTopToolBar"; 
 | 
import MemoInput from "../components/MemoInput"; 
 | 
import StatusSelectInput from "../components/StatusSelectInput"; 
 | 
  
 | 
const FormToolbar = () => { 
 | 
    const { getValues } = useFormContext(); 
 | 
  
 | 
    return ( 
 | 
        <Toolbar sx={{ justifyContent: 'space-between' }}> 
 | 
            <SaveButton /> 
 | 
            <DeleteButton mutationMode="optimistic" /> 
 | 
        </Toolbar> 
 | 
    ) 
 | 
} 
 | 
  
 | 
const TaskEdit = () => { 
 | 
    const translate = useTranslate(); 
 | 
  
 | 
    return ( 
 | 
        <Edit 
 | 
            redirect="list" 
 | 
            mutationMode={EDIT_MODE} 
 | 
            actions={<CustomerTopToolBar />} 
 | 
            aside={<EditBaseAside />} 
 | 
        > 
 | 
            <SimpleForm 
 | 
                shouldUnregister 
 | 
                warnWhenUnsavedChanges 
 | 
                toolbar={<FormToolbar />} 
 | 
                mode="onTouched" 
 | 
                defaultValues={{}} 
 | 
            // validate={(values) => { }} 
 | 
            > 
 | 
                <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}> 
 | 
                    <Grid item xs={12} md={8}> 
 | 
                        <Typography variant="h6" gutterBottom> 
 | 
                            {translate('common.edit.title.main')} 
 | 
                        </Typography> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <TextInput 
 | 
                                label="table.field.task.uuid" 
 | 
                                source="uuid" 
 | 
                                parse={v => v} 
 | 
                                autoFocus 
 | 
                            /> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <ReferenceInput 
 | 
                                source="busId" 
 | 
                                reference="bus" 
 | 
                                perPage={REFERENCE_INPUT_PAGESIZE} 
 | 
                            > 
 | 
                                <AutocompleteInput 
 | 
                                    label="table.field.task.busId" 
 | 
                                    optionText="seqNum" 
 | 
                                    filterToQuery={(val) => ({ seqNum: val })} 
 | 
                                /> 
 | 
                            </ReferenceInput> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <TextInput 
 | 
                                label="table.field.task.seqNum" 
 | 
                                source="seqNum" 
 | 
                                parse={v => v} 
 | 
                            /> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <NumberInput 
 | 
                                label="table.field.task.priority" 
 | 
                                source="priority" 
 | 
                            /> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <TextInput 
 | 
                                label="table.field.task.name" 
 | 
                                source="name" 
 | 
                                parse={v => v} 
 | 
                            /> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <ReferenceInput 
 | 
                                source="taskSts" 
 | 
                                reference="taskSts" 
 | 
                                perPage={REFERENCE_INPUT_PAGESIZE} 
 | 
                            > 
 | 
                                <AutocompleteInput 
 | 
                                    label="table.field.task.taskSts" 
 | 
                                    optionText="name" 
 | 
                                    filterToQuery={(val) => ({ name: val })} 
 | 
                                /> 
 | 
                            </ReferenceInput> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <ReferenceInput 
 | 
                                source="taskType" 
 | 
                                reference="taskType" 
 | 
                                perPage={REFERENCE_INPUT_PAGESIZE} 
 | 
                            > 
 | 
                                <AutocompleteInput 
 | 
                                    label="table.field.task.taskType" 
 | 
                                    optionText="name" 
 | 
                                    filterToQuery={(val) => ({ name: val })} 
 | 
                                /> 
 | 
                            </ReferenceInput> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <ReferenceInput 
 | 
                                source="agvId" 
 | 
                                reference="agv" 
 | 
                                perPage={REFERENCE_INPUT_PAGESIZE} 
 | 
                            > 
 | 
                                <AutocompleteInput 
 | 
                                    label="table.field.task.agvId" 
 | 
                                    optionText="uuid" 
 | 
                                    filterToQuery={(val) => ({ uuid: val })} 
 | 
                                /> 
 | 
                            </ReferenceInput> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <DateInput 
 | 
                                label="table.field.task.ioTime" 
 | 
                                source="ioTime" 
 | 
                            /> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <DateInput 
 | 
                                label="table.field.task.startTime" 
 | 
                                source="startTime" 
 | 
                            /> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <DateInput 
 | 
                                label="table.field.task.endTime" 
 | 
                                source="endTime" 
 | 
                            /> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <DateInput 
 | 
                                label="table.field.task.errTime" 
 | 
                                source="errTime" 
 | 
                            /> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <ReferenceInput 
 | 
                                source="oriSta" 
 | 
                                reference="sta" 
 | 
                                perPage={REFERENCE_INPUT_PAGESIZE} 
 | 
                            > 
 | 
                                <AutocompleteInput 
 | 
                                    label="table.field.task.oriSta" 
 | 
                                    optionText="staNo" 
 | 
                                    filterToQuery={(val) => ({ staNo: val })} 
 | 
                                /> 
 | 
                            </ReferenceInput> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <ReferenceInput 
 | 
                                source="oriLoc" 
 | 
                                reference="loc" 
 | 
                                perPage={REFERENCE_INPUT_PAGESIZE} 
 | 
                            > 
 | 
                                <AutocompleteInput 
 | 
                                    label="table.field.task.oriLoc" 
 | 
                                    optionText="locNo" 
 | 
                                    filterToQuery={(val) => ({ locNo: val })} 
 | 
                                /> 
 | 
                            </ReferenceInput> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <ReferenceInput 
 | 
                                source="oriCode" 
 | 
                                reference="code" 
 | 
                                perPage={REFERENCE_INPUT_PAGESIZE} 
 | 
                            > 
 | 
                                <AutocompleteInput 
 | 
                                    label="table.field.task.oriCode" 
 | 
                                    optionText="data" 
 | 
                                    filterToQuery={(val) => ({ data: val })} 
 | 
                                /> 
 | 
                            </ReferenceInput> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <ReferenceInput 
 | 
                                source="destSta" 
 | 
                                reference="sta" 
 | 
                                perPage={REFERENCE_INPUT_PAGESIZE} 
 | 
                            > 
 | 
                                <AutocompleteInput 
 | 
                                    label="table.field.task.destSta" 
 | 
                                    optionText="staNo" 
 | 
                                    filterToQuery={(val) => ({ staNo: val })} 
 | 
                                /> 
 | 
                            </ReferenceInput> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <ReferenceInput 
 | 
                                source="destLoc" 
 | 
                                reference="loc" 
 | 
                                perPage={REFERENCE_INPUT_PAGESIZE} 
 | 
                            > 
 | 
                                <AutocompleteInput 
 | 
                                    label="table.field.task.destLoc" 
 | 
                                    optionText="locNo" 
 | 
                                    filterToQuery={(val) => ({ locNo: val })} 
 | 
                                /> 
 | 
                            </ReferenceInput> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <ReferenceInput 
 | 
                                source="destCode" 
 | 
                                reference="code" 
 | 
                                perPage={REFERENCE_INPUT_PAGESIZE} 
 | 
                            > 
 | 
                                <AutocompleteInput 
 | 
                                    label="table.field.task.destCode" 
 | 
                                    optionText="data" 
 | 
                                    filterToQuery={(val) => ({ data: val })} 
 | 
                                /> 
 | 
                            </ReferenceInput> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <TextInput 
 | 
                                label="table.field.task.emptyMk" 
 | 
                                source="emptyMk" 
 | 
                                parse={v => v} 
 | 
                            /> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <TextInput 
 | 
                                label="table.field.task.zpallet" 
 | 
                                source="zpallet" 
 | 
                                parse={v => v} 
 | 
                            /> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <TextInput 
 | 
                                label="table.field.task.phase" 
 | 
                                source="phase" 
 | 
                                parse={v => v} 
 | 
                            /> 
 | 
                        </Stack> 
 | 
                        <Stack direction='row' gap={2}> 
 | 
                            <TextInput 
 | 
                                label="table.field.task.errDesc" 
 | 
                                source="errDesc" 
 | 
                                parse={v => v} 
 | 
                            /> 
 | 
                        </Stack> 
 | 
  
 | 
                    </Grid> 
 | 
                    <Grid item xs={12} md={4}> 
 | 
                        <Typography variant="h6" gutterBottom> 
 | 
                            {translate('common.edit.title.common')} 
 | 
                        </Typography> 
 | 
                        <StatusSelectInput /> 
 | 
                        <Box mt="2em" /> 
 | 
                        <MemoInput /> 
 | 
                    </Grid> 
 | 
                </Grid> 
 | 
            </SimpleForm> 
 | 
        </Edit > 
 | 
    ) 
 | 
} 
 | 
  
 | 
export default TaskEdit; 
 |