Browse Source

update salary modal

tags/Baseline_180220205_Frontend
MSI\derek 7 months ago
parent
commit
3272790170
2 changed files with 46 additions and 19 deletions
  1. +1
    -11
      src/components/CreateStaff/CreateStaff.tsx
  2. +45
    -8
      src/components/EditStaff/SalaryEffectiveModel.tsx

+ 1
- 11
src/components/CreateStaff/CreateStaff.tsx View File

@@ -4,25 +4,15 @@ import CustomInputForm from "../CustomInputForm";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { import {
FieldErrors,
FormProvider, FormProvider,
SubmitErrorHandler,
SubmitHandler, SubmitHandler,
useForm, useForm,
} from "react-hook-form"; } from "react-hook-form";
import { CreateStaffInputs, saveStaff, testing } from "@/app/api/staff/actions"; import { CreateStaffInputs, saveStaff, testing } from "@/app/api/staff/actions";
import { Button, Stack, Typography } from "@mui/material"; import { Button, Stack, Typography } from "@mui/material";
// import CreateStaffForm from "../CreateStaffForm";
import { comboProp, fetchCompanyCombo } from "@/app/api/companys/actions";
import { fetchTeamCombo } from "@/app/api/team/actions";
import { fetchDepartmentCombo } from "@/app/api/departments/actions";
import { fetchPositionCombo } from "@/app/api/positions/actions";
import { fetchGradeCombo } from "@/app/api/grades/actions";
import { fetchSkillCombo } from "@/app/api/skill/actions";
import { fetchSalaryCombo } from "@/app/api/salarys/actions";
import { comboProp} from "@/app/api/companys/actions";
import StaffInfo from "./StaffInfo"; import StaffInfo from "./StaffInfo";
import { Check, Close } from "@mui/icons-material"; import { Check, Close } from "@mui/icons-material";
import { ServerFetchError } from "@/app/utils/fetchUtil";


interface Field { interface Field {
id: string; id: string;


+ 45
- 8
src/components/EditStaff/SalaryEffectiveModel.tsx View File

@@ -13,6 +13,7 @@ import DeleteIcon from '@mui/icons-material/Delete';
import CancelIcon from '@mui/icons-material/Cancel'; import CancelIcon from '@mui/icons-material/Cancel';
import EditIcon from '@mui/icons-material/Edit'; import EditIcon from '@mui/icons-material/Edit';
import { GridActionsCellItem } from '@mui/x-data-grid'; import { GridActionsCellItem } from '@mui/x-data-grid';
import waitForCondition from '../utils/waitFor';


interface SalaryEffectiveModelProps { interface SalaryEffectiveModelProps {
open: boolean; open: boolean;
@@ -58,7 +59,7 @@ const modalSx: SxProps = {
return ( return (
<GridToolbarContainer> <GridToolbarContainer>
<Button disabled={count>=1} color="primary" startIcon={<AddIcon />} onClick={handleClick}>
<Button color="primary" startIcon={<AddIcon />} onClick={handleClick}>
{"addRecordBtn"} {"addRecordBtn"}
</Button> </Button>
{/* <Button color="primary" startIcon={<AddIcon />} onClick={handleSave}> {/* <Button color="primary" startIcon={<AddIcon />} onClick={handleSave}>
@@ -69,13 +70,15 @@ const modalSx: SxProps = {
} }


const SalaryEffectiveModel: React.FC<SalaryEffectiveModelProps> = ({ open, onClose, modalSx: mSx, columns }) => { const SalaryEffectiveModel: React.FC<SalaryEffectiveModelProps> = ({ open, onClose, modalSx: mSx, columns }) => {
const { t } = useTranslation();
const {
t,
// i18n: { language },
} = useTranslation();
const { control, register, formState, trigger, watch, setValue, getValues } = useFormContext(); const { control, register, formState, trigger, watch, setValue, getValues } = useFormContext();
const [rowModesModel, setRowModesModel] = useState<GridRowModesModel>({}); const [rowModesModel, setRowModesModel] = useState<GridRowModesModel>({});
const [count, setCount] = useState(0); const [count, setCount] = useState(0);
const [_rows, setRows] = useState(() => { const [_rows, setRows] = useState(() => {
const list = getValues('salaryEffectiveInfo') const list = getValues('salaryEffectiveInfo')
console.log(list)
return list && list.length > 0 ? list : [] return list && list.length > 0 ? list : []
}); });
const [_delRows, setDelRows] = useState<number[]>([]); const [_delRows, setDelRows] = useState<number[]>([]);
@@ -85,7 +88,32 @@ const SalaryEffectiveModel: React.FC<SalaryEffectiveModelProps> = ({ open, onClo
const handleClose = () => { const handleClose = () => {
onClose(); onClose();
}; };
const looping = async () => {
for (let i = 0; i < _rows.length; i++) {
const id = _rows[i].id
setRowModesModel((prevRowModesModel) => ({
...prevRowModesModel,
[id]: { mode: GridRowModes.View }
}));
}
return true;
}
const handleSaveAll = async () => {
// trigger save all
console.log(_rows)
await waitForCondition(async () => {
return looping()
})
console.log(rowModesModel)
};


const bigTesting = async () => {
await looping()
setTimeout(() => {
onClose()
}, 800)
}
// const handleSave = async () => { // const handleSave = async () => {
// const isValid = await trigger(); // const isValid = await trigger();
// // if (isValid) { // // if (isValid) {
@@ -126,8 +154,7 @@ const SalaryEffectiveModel: React.FC<SalaryEffectiveModelProps> = ({ open, onClo
setValue('delSalaryEffectiveInfo', _delRows) setValue('delSalaryEffectiveInfo', _delRows)
}, [_delRows]) }, [_delRows])


const handleSaveClick = useCallback(
(id: any) => () => {
const handleSaveClick = useCallback((id: any) => () => {
setRowModesModel((prevRowModesModel) => ({ setRowModesModel((prevRowModesModel) => ({
...prevRowModesModel, ...prevRowModesModel,
[id]: { mode: GridRowModes.View } [id]: { mode: GridRowModes.View }
@@ -136,6 +163,15 @@ const SalaryEffectiveModel: React.FC<SalaryEffectiveModelProps> = ({ open, onClo
[setRowModesModel] [setRowModesModel]
); );
const handleSaveClickAsync = useCallback(async(id: any) => () => {
setRowModesModel((prevRowModesModel) => ({
...prevRowModesModel,
[id]: { mode: GridRowModes.View }
}));
},
[setRowModesModel]
);
const handleCancelClick = useCallback( const handleCancelClick = useCallback(
(id: any) => () => { (id: any) => () => {
setRowModesModel((prevRowModesModel) => ({ setRowModesModel((prevRowModesModel) => ({
@@ -223,8 +259,8 @@ const SalaryEffectiveModel: React.FC<SalaryEffectiveModelProps> = ({ open, onClo
} }


useEffect(() => { useEffect(() => {
console.log(formValues)
}, [open])
console.log(_rows)
}, [_rows])


return ( return (
<Modal open={open} onClose={handleClose}> <Modal open={open} onClose={handleClose}>
@@ -251,7 +287,8 @@ const SalaryEffectiveModel: React.FC<SalaryEffectiveModelProps> = ({ open, onClo
<Button variant="text" onClick={handleClose}> <Button variant="text" onClick={handleClose}>
{t('Cancel')} {t('Cancel')}
</Button> </Button>
<Button variant="contained" onClick={handleClose}>
<Button variant="contained" onClick={bigTesting}>
{/* <Button variant="contained" onClick={handleSaveAll}> */}
{t("Save")} {t("Save")}
</Button> </Button>
</Box> </Box>


Loading…
Cancel
Save