diff --git a/geneit_app/src/hooks/useQuery.tsx b/geneit_app/src/hooks/useQuery.tsx new file mode 100644 index 0000000..b5b889f --- /dev/null +++ b/geneit_app/src/hooks/useQuery.tsx @@ -0,0 +1,11 @@ +// A custom hook that builds on useLocation to parse + +import React from "react"; +import { useLocation } from "react-router-dom"; + +// the query string for you. +export function useQuery(): URLSearchParams { + const { search } = useLocation(); + + return React.useMemo(() => new URLSearchParams(search), [search]); +} diff --git a/geneit_app/src/routes/family/FamilyCoupleRoute.tsx b/geneit_app/src/routes/family/FamilyCoupleRoute.tsx index a9a9bcb..94b697a 100644 --- a/geneit_app/src/routes/family/FamilyCoupleRoute.tsx +++ b/geneit_app/src/routes/family/FamilyCoupleRoute.tsx @@ -8,6 +8,7 @@ import React from "react"; import { useNavigate, useParams } from "react-router-dom"; import { Couple, CoupleApi } from "../../api/CoupleApi"; import { Member } from "../../api/MemberApi"; +import { ServerApi } from "../../api/ServerApi"; import { useAlert } from "../../hooks/context_providers/AlertDialogProvider"; import { useConfirm } from "../../hooks/context_providers/ConfirmDialogProvider"; import { useSnackbar } from "../../hooks/context_providers/SnackbarProvider"; @@ -19,11 +20,10 @@ import { FamilyPageTitle } from "../../widgets/FamilyPageTitle"; import { MemberItem } from "../../widgets/MemberItem"; import { PropertiesBox } from "../../widgets/PropertiesBox"; import { RouterLink } from "../../widgets/RouterLink"; -import { MemberInput } from "../../widgets/forms/MemberInput"; -import { UploadPhotoButton } from "../../widgets/forms/UploadPhotoButton"; -import { PropSelect } from "../../widgets/forms/SelectInput"; -import { ServerApi } from "../../api/ServerApi"; import { DateInput } from "../../widgets/forms/DateInput"; +import { MemberInput } from "../../widgets/forms/MemberInput"; +import { PropSelect } from "../../widgets/forms/SelectInput"; +import { UploadPhotoButton } from "../../widgets/forms/UploadPhotoButton"; /** * Create a new couple route diff --git a/geneit_app/src/routes/family/FamilyMemberRoute.tsx b/geneit_app/src/routes/family/FamilyMemberRoute.tsx index e68c22e..4e15b88 100644 --- a/geneit_app/src/routes/family/FamilyMemberRoute.tsx +++ b/geneit_app/src/routes/family/FamilyMemberRoute.tsx @@ -14,6 +14,7 @@ import { import * as EmailValidator from "email-validator"; import React from "react"; import { useNavigate, useParams } from "react-router-dom"; +import { Couple } from "../../api/CoupleApi"; import { Member, MemberApi, fmtDate } from "../../api/MemberApi"; import { ServerApi } from "../../api/ServerApi"; import { useAlert } from "../../hooks/context_providers/AlertDialogProvider"; @@ -22,6 +23,7 @@ import { useSnackbar } from "../../hooks/context_providers/SnackbarProvider"; import { AsyncWidget } from "../../widgets/AsyncWidget"; import { useFamily } from "../../widgets/BaseFamilyRoute"; import { ConfirmLeaveWithoutSaveDialog } from "../../widgets/ConfirmLeaveWithoutSaveDialog"; +import { CouplePhoto } from "../../widgets/CouplePhoto"; import { FamilyPageTitle } from "../../widgets/FamilyPageTitle"; import { MemberItem } from "../../widgets/MemberItem"; import { MemberPhoto } from "../../widgets/MemberPhoto"; @@ -34,8 +36,7 @@ import { PropEdit } from "../../widgets/forms/PropEdit"; import { PropSelect } from "../../widgets/forms/SelectInput"; import { SexSelection } from "../../widgets/forms/SexSelection"; import { UploadPhotoButton } from "../../widgets/forms/UploadPhotoButton"; -import { Couple } from "../../api/CoupleApi"; -import { CouplePhoto } from "../../widgets/CouplePhoto"; +import { useQuery } from "../../hooks/useQuery"; /** * Create a new member route @@ -48,6 +49,10 @@ export function FamilyCreateMemberRoute(): React.ReactElement { const n = useNavigate(); const family = useFamily(); + const parameters = useQuery(); + const mother = Number(parameters.get("mother")); + const father = Number(parameters.get("father")); + const create = async (m: Member) => { try { const r = await MemberApi.Create(m); @@ -68,9 +73,13 @@ export function FamilyCreateMemberRoute(): React.ReactElement { n(family.family.URL("members")); }; + const member = Member.New(family.family.family_id); + if (mother) member.mother = mother; + if (father) member.father = father; + return ( )) )} + + {(member.mother || member.father) && ( +
+ + + +
+ )} )}