refactored explanation field on create flow
road missions operator cartable
This commit is contained in:
@@ -4,6 +4,9 @@ import SelectBox from "@/core/components/SelectBox";
|
|||||||
|
|
||||||
const ItemSelectField = ({ control, setValue }) => {
|
const ItemSelectField = ({ control, setValue }) => {
|
||||||
const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems();
|
const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems();
|
||||||
|
function getItemName(val) {
|
||||||
|
return itemsList.find((item) => item.id === val)?.name;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Controller
|
<Controller
|
||||||
@@ -18,14 +21,14 @@ const ItemSelectField = ({ control, setValue }) => {
|
|||||||
schema={{ name: "name", value: "id" }}
|
schema={{ name: "name", value: "id" }}
|
||||||
error={errorItemsList}
|
error={errorItemsList}
|
||||||
helperText={error?.message}
|
helperText={error?.message}
|
||||||
onChange={() => {
|
onChange={(value) => {
|
||||||
field.onChange;
|
field.onChange(value);
|
||||||
|
setValue("explanation", getItemName(value));
|
||||||
setValue("sub_item_id", "");
|
setValue("sub_item_id", "");
|
||||||
|
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
export default ItemSelectField
|
export default ItemSelectField;
|
||||||
|
|||||||
@@ -2,10 +2,16 @@ import useRoadItemGetSubItems from "@/lib/hooks/useRoadItemGetISubtems";
|
|||||||
import { Controller } from "react-hook-form";
|
import { Controller } from "react-hook-form";
|
||||||
import SelectBox from "@/core/components/SelectBox";
|
import SelectBox from "@/core/components/SelectBox";
|
||||||
|
|
||||||
const SubItemSelectField = ({ control, watch }) => {
|
const SubItemSelectField = ({ control, watch, setValue, getValues }) => {
|
||||||
const itemId = watch("item_id");
|
const itemId = watch("item_id");
|
||||||
const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId);
|
const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId);
|
||||||
|
|
||||||
|
function createExplanation(val) {
|
||||||
|
const currentExplanation = getValues("explanation");
|
||||||
|
const selectedItem = subItemsList.find((item) => item.id === val)?.name;
|
||||||
|
return `${currentExplanation}-${selectedItem}`;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Controller
|
<Controller
|
||||||
control={control}
|
control={control}
|
||||||
@@ -19,10 +25,13 @@ const SubItemSelectField = ({ control, watch }) => {
|
|||||||
schema={{ name: "name", value: "id" }}
|
schema={{ name: "name", value: "id" }}
|
||||||
error={errorSubItemsList}
|
error={errorSubItemsList}
|
||||||
helperText={error?.message}
|
helperText={error?.message}
|
||||||
onChange={field.onChange}
|
onChange={(val) => {
|
||||||
|
field.onChange(val);
|
||||||
|
setValue("explanation", createExplanation(val));
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
export default SubItemSelectField;
|
export default SubItemSelectField;
|
||||||
|
|||||||
@@ -8,17 +8,16 @@ import { yupResolver } from "@hookform/resolvers/yup";
|
|||||||
import { ExitToApp } from "@mui/icons-material";
|
import { ExitToApp } from "@mui/icons-material";
|
||||||
import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material";
|
import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material";
|
||||||
import { Controller, useForm } from "react-hook-form";
|
import { Controller, useForm } from "react-hook-form";
|
||||||
import { array, number, object, string } from "yup";
|
import { array, object, string } from "yup";
|
||||||
import ItemSelectField
|
import ItemSelectField from "./ItemSelectField";
|
||||||
from "./ItemSelectField";
|
import SubItemSelectField from "./SubItemSelectField";
|
||||||
import SubItemSelectField
|
|
||||||
from "./SubItemSelectField";
|
|
||||||
|
|
||||||
const validationSchema = object({
|
const validationSchema = object({
|
||||||
explanation: string().required("موضوع را مشخص کنید!"),
|
|
||||||
end_point: string().required("مقصد را مشخص کنید!"),
|
end_point: string().required("مقصد را مشخص کنید!"),
|
||||||
region: string().required("محور ماموریت را مشخص کنید!"),
|
region: string().required("محور ماموریت را مشخص کنید!"),
|
||||||
category_id: string().required("نوع ماموریت را مشخص کنید!"),
|
category_id: string().required("نوع ماموریت را مشخص کنید!"),
|
||||||
|
item_id: string().required("موضوع را مشخص کنید!"),
|
||||||
|
sub_item_id: string().required("اقدام انجام شده را مشخص کنید!"),
|
||||||
requested_machines: array().min(1, "نوع خودرو را مشخص کنید!").required("نوع خودرو را مشخص کنید!"),
|
requested_machines: array().min(1, "نوع خودرو را مشخص کنید!").required("نوع خودرو را مشخص کنید!"),
|
||||||
road_observed_id: string().when("category_id", {
|
road_observed_id: string().when("category_id", {
|
||||||
is: "3",
|
is: "3",
|
||||||
@@ -39,7 +38,7 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => {
|
|||||||
road_observed_id: allData.road_observed_id,
|
road_observed_id: allData.road_observed_id,
|
||||||
};
|
};
|
||||||
|
|
||||||
const { control, handleSubmit, watch, setValue } = useForm({
|
const { control, handleSubmit, watch, setValue, getValues } = useForm({
|
||||||
defaultValues,
|
defaultValues,
|
||||||
resolver: yupResolver(validationSchema),
|
resolver: yupResolver(validationSchema),
|
||||||
mode: "all",
|
mode: "all",
|
||||||
@@ -60,7 +59,12 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => {
|
|||||||
<ItemSelectField control={control} watch={watch} setValue={setValue} />
|
<ItemSelectField control={control} watch={watch} setValue={setValue} />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12} sm={6}>
|
<Grid item xs={12} sm={6}>
|
||||||
<SubItemSelectField control={control} watch={watch} />
|
<SubItemSelectField
|
||||||
|
control={control}
|
||||||
|
watch={watch}
|
||||||
|
setValue={setValue}
|
||||||
|
getValues={getValues}
|
||||||
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12} sm={6}>
|
<Grid item xs={12} sm={6}>
|
||||||
<Controller
|
<Controller
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ const Create = ({ mutate }) => {
|
|||||||
start_date: result.start_date,
|
start_date: result.start_date,
|
||||||
end_date: result.end_date,
|
end_date: result.end_date,
|
||||||
}),
|
}),
|
||||||
|
item_id: result.item_id,
|
||||||
|
sub_item_id: result.sub_item_id,
|
||||||
},
|
},
|
||||||
hasSidebarUpdate: true,
|
hasSidebarUpdate: true,
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user