diff --git a/src/frontend/src/components/CreateProject/CreateprojectLayout/index.tsx b/src/frontend/src/components/CreateProject/CreateprojectLayout/index.tsx index ad91e3d1..6f0c7062 100644 --- a/src/frontend/src/components/CreateProject/CreateprojectLayout/index.tsx +++ b/src/frontend/src/components/CreateProject/CreateprojectLayout/index.tsx @@ -70,6 +70,9 @@ export default function CreateprojectLayout() { const isTerrainFollow = useTypedSelector( state => state.createproject.isTerrainFollow, ); + const isNoflyzonePresent = useTypedSelector( + state => state.createproject.isNoflyzonePresent, + ); const initialState: FieldValues = { name: '', @@ -155,6 +158,25 @@ export default function CreateprojectLayout() { }; const onSubmit = (data: any) => { + if (activeStep === 2) { + if ( + !data?.outline_geojson || + (Array.isArray(data?.outline_geojson) && + data?.outline_geojson?.length === 0) + ) { + toast.error('Please upload or draw and save project area'); + return; + } + if ( + isNoflyzonePresent === 'yes' && + (!data?.outline_no_fly_zones || + data?.outline_no_fly_zones?.length === 0) + ) { + toast.error('Please upload or draw and save No Fly zone area'); + return; + } + } + if (activeStep === 4 && !splitGeojson) return; if (activeStep !== 5) { dispatch(setCreateProjectState({ activeStep: activeStep + 1 })); @@ -164,6 +186,9 @@ export default function CreateprojectLayout() { ...data, is_terrain_follow: isTerrainFollow === 'hilly', }; + // remove key + if (isNoflyzonePresent === 'no') delete payload?.outline_no_fly_zones; + createProject(payload); }; diff --git a/src/frontend/src/components/CreateProject/FormContents/BasicInformation/index.tsx b/src/frontend/src/components/CreateProject/FormContents/BasicInformation/index.tsx index 6ceebb3e..1b043dcc 100644 --- a/src/frontend/src/components/CreateProject/FormContents/BasicInformation/index.tsx +++ b/src/frontend/src/components/CreateProject/FormContents/BasicInformation/index.tsx @@ -17,6 +17,7 @@ export default function BasicInformation({ placeholder="Enter Name of the Project" {...register('name', { required: 'Name of the project is required', + setValueAs: (value: string) => value.trim(), })} /> @@ -28,6 +29,7 @@ export default function BasicInformation({ placeholder="Description of the Project" {...register('description', { required: 'Description is Required', + setValueAs: (value: string) => value.trim(), })} /> diff --git a/src/frontend/src/components/CreateProject/FormContents/Contributions/index.tsx b/src/frontend/src/components/CreateProject/FormContents/Contributions/index.tsx index d941d23f..79d0bd69 100644 --- a/src/frontend/src/components/CreateProject/FormContents/Contributions/index.tsx +++ b/src/frontend/src/components/CreateProject/FormContents/Contributions/index.tsx @@ -28,6 +28,7 @@ export default function Conditions({ placeholder="Enter Instructions for Drone Operators" {...register('per_task_instructions', { required: 'Instructions are required', + setValueAs: (value: string) => value.trim(), })} />