@@ -3,7 +3,7 @@ import React, { useEffect, useState } from "react";
33import { useTranslation } from "react-i18next" ;
44import { useForm } from "react-hook-form" ;
55import { useQuery } from "@apollo/client" ;
6- import { sortBy } from "lodash" ;
6+ import { sortBy , uniq } from "lodash" ;
77import { useRouter } from "next/router" ;
88import ApplicationEvent from "../applicationEvent/ApplicationEvent" ;
99import {
@@ -24,7 +24,10 @@ import {
2424 ApplicationRoundType ,
2525 ReservationUnitType ,
2626} from "../../modules/gql-types" ;
27- import { RESERVATION_PURPOSES } from "../../modules/queries/params" ;
27+ import {
28+ RESERVATION_PURPOSES ,
29+ SEARCH_FORM_PARAMS_UNIT ,
30+ } from "../../modules/queries/params" ;
2831
2932type Props = {
3033 applicationRound : ApplicationRoundType ;
@@ -62,13 +65,29 @@ const Page1 = ({
6265 const [ options , setOptions ] = useState < OptionTypes > ( ) ;
6366
6467 const [ purposeOptions , setPurposeOptions ] = useState < OptionType [ ] > ( [ ] ) ;
68+ const [ unitOptions , setUnitOptions ] = useState < OptionType [ ] > ( [ ] ) ;
6569
6670 const history = useRouter ( ) ;
6771
6872 const { t } = useTranslation ( ) ;
6973
7074 const { application } = editorState ;
7175
76+ useQuery < Query > ( SEARCH_FORM_PARAMS_UNIT , {
77+ onCompleted : ( res ) => {
78+ const unitsInApplicationRound = uniq (
79+ applicationRound . reservationUnits . flatMap ( ( resUnit ) => resUnit . unit . pk )
80+ ) ;
81+ const units = res ?. units ?. edges
82+ ?. filter ( ( { node } ) => unitsInApplicationRound . includes ( node . pk ) )
83+ . map ( ( { node } ) => ( {
84+ id : String ( node . pk ) ,
85+ name : getTranslation ( node , "name" ) ,
86+ } ) ) ;
87+ setUnitOptions ( mapOptions ( sortBy ( units , "name" ) as StringParameter [ ] ) ) ;
88+ } ,
89+ } ) ;
90+
7291 useQuery < Query > ( RESERVATION_PURPOSES , {
7392 onCompleted : ( res ) => {
7493 const purposes = res ?. reservationPurposes ?. edges ?. map ( ( { node } ) => ( {
@@ -79,6 +98,7 @@ const Page1 = ({
7998 mapOptions ( sortBy ( purposes , "name" ) as StringParameter [ ] )
8099 ) ;
81100 } ,
101+ skip : unitOptions . length < 1 ,
82102 } ) ;
83103
84104 const form = useForm ( {
@@ -218,6 +238,7 @@ const Page1 = ({
218238 optionTypes = { {
219239 ...options ,
220240 purposeOptions,
241+ unitOptions,
221242 } }
222243 selectedReservationUnits = { selectedReservationUnits }
223244 onSave = { form . handleSubmit ( ( app : Application ) =>
0 commit comments