diff --git a/apps/api/src/db/schemas/applicationContents.ts b/apps/api/src/db/schemas/applicationContents.ts index 2ab29e56d..c57071406 100644 --- a/apps/api/src/db/schemas/applicationContents.ts +++ b/apps/api/src/db/schemas/applicationContents.ts @@ -75,6 +75,7 @@ export const applicationContents = pgTable( project_title: text(), project_website: text(), project_background: text(), + project_country: varchar({ length: 255 }), project_methodology: text(), project_aims: text(), project_summary: text(), diff --git a/apps/api/src/docs/schemas/application.yaml b/apps/api/src/docs/schemas/application.yaml index 2986a4b84..4b4309e68 100644 --- a/apps/api/src/docs/schemas/application.yaml +++ b/apps/api/src/docs/schemas/application.yaml @@ -200,6 +200,9 @@ components: projectBackground: type: string description: Brief description of project + projectCountry: + type: string + description: The country that the project's data resides in projectMethodology: type: string description: Description of scientific approach used in the project @@ -488,6 +491,9 @@ components: projectBackground: type: string description: Brief description of project + projectCountry: + type: string + description: The country that the project's data resides in projectMethodology: type: string description: Description of scientific approach used in the project diff --git a/apps/api/src/service/pdf/components/pages/ProjectInformation.tsx b/apps/api/src/service/pdf/components/pages/ProjectInformation.tsx index 5292ff03c..a9a6ca73e 100644 --- a/apps/api/src/service/pdf/components/pages/ProjectInformation.tsx +++ b/apps/api/src/service/pdf/components/pages/ProjectInformation.tsx @@ -32,6 +32,7 @@ const ProjectInformation = ({ projectTitle, projectWebsite, projectBackground, + projectCountry, projectAims, projectMethodology, projectSummary, @@ -54,6 +55,9 @@ const ProjectInformation = ({ {projectBackground} + + {projectCountry} + {projectMethodology} diff --git a/apps/api/src/service/pdf/components/translations/enTranslations.ts b/apps/api/src/service/pdf/components/translations/enTranslations.ts index d478c75f5..3e8a8fdfc 100644 --- a/apps/api/src/service/pdf/components/translations/enTranslations.ts +++ b/apps/api/src/service/pdf/components/translations/enTranslations.ts @@ -159,6 +159,7 @@ export const PROJECT_INFORMATION: ProjectInformationTranslation = { RESEARCH_SUMMARY_DESCRIPTION: 'This section should describe the background, aims, and methodology of your research project, as well as plans for how you will use the PCGL Controlled Data.', PROJECT_BACKGROUND_LABEL: 'Project Background', + PROJECT_COUNTRY_LABEL: 'Which country will the data reside in?', USE_OF_DATA_METHODOLOGY_LABEL: 'Use of Data and Methodology', AIMS_LABEL: 'Aims', LAY_SUMMARY_TITLE: 'Project Lay Summary', diff --git a/apps/api/src/service/pdf/components/translations/frTranslations.ts b/apps/api/src/service/pdf/components/translations/frTranslations.ts index 9b15589d8..95f698660 100644 --- a/apps/api/src/service/pdf/components/translations/frTranslations.ts +++ b/apps/api/src/service/pdf/components/translations/frTranslations.ts @@ -161,6 +161,7 @@ export const FR_PROJECT_INFORMATION: ProjectInformationTranslation = { RESEARCH_SUMMARY_DESCRIPTION: "Cette section doit décrire le contexte, les objectifs et la méthodologie de votre projet de recherche, ainsi que les plans d'utilisation des données contrôlées de la BGP.", PROJECT_BACKGROUND_LABEL: 'Contexte', + PROJECT_COUNTRY_LABEL: 'Dans quel pays les données seront-elles hébergées ?', USE_OF_DATA_METHODOLOGY_LABEL: 'Utilisation des données et méthodologie', AIMS_LABEL: 'Objectifs', LAY_SUMMARY_TITLE: 'Résumé vulgarisé du projet', diff --git a/apps/api/src/service/pdf/components/translations/types.ts b/apps/api/src/service/pdf/components/translations/types.ts index 0662d03a0..507a45715 100644 --- a/apps/api/src/service/pdf/components/translations/types.ts +++ b/apps/api/src/service/pdf/components/translations/types.ts @@ -197,6 +197,7 @@ export type ProjectInformationTranslation = { RESEARCH_SUMMARY_TITLE: string; RESEARCH_SUMMARY_DESCRIPTION: string; PROJECT_BACKGROUND_LABEL: string; + PROJECT_COUNTRY_LABEL: string; USE_OF_DATA_METHODOLOGY_LABEL: string; AIMS_LABEL: string; LAY_SUMMARY_TITLE: string; diff --git a/apps/api/src/service/pdf/documents/PCGLApplication.tsx b/apps/api/src/service/pdf/documents/PCGLApplication.tsx index 2ff448708..1ce00a9c5 100644 --- a/apps/api/src/service/pdf/documents/PCGLApplication.tsx +++ b/apps/api/src/service/pdf/documents/PCGLApplication.tsx @@ -167,6 +167,7 @@ const PCGLApplication = ({ applicationContents, signature, collaborators, docCre projectTitle={contents?.projectTitle} projectWebsite={contents?.projectWebsite} projectBackground={contents?.projectBackground} + projectCountry={contents?.projectCountry} projectAims={contents?.projectAims} projectSummary={contents?.projectSummary} projectMethodology={contents?.projectMethodology} @@ -245,6 +246,7 @@ const PCGLApplication = ({ applicationContents, signature, collaborators, docCre projectTitle={contents?.projectTitle} projectWebsite={contents?.projectWebsite} projectBackground={contents?.projectBackground} + projectCountry={contents?.projectCountry} projectAims={contents?.projectAims} projectSummary={contents?.projectSummary} projectMethodology={contents?.projectMethodology} diff --git a/apps/ui/src/components/pages/application/utils/validatorFunctions.ts b/apps/ui/src/components/pages/application/utils/validatorFunctions.ts index d27e12698..b78a36684 100644 --- a/apps/ui/src/components/pages/application/utils/validatorFunctions.ts +++ b/apps/ui/src/components/pages/application/utils/validatorFunctions.ts @@ -73,6 +73,7 @@ export const ValidatorProject = (fields: ApplicationContentsResponse): boolean = projectTitle: fields.projectTitle, projectWebsite: fields.projectWebsite, projectBackground: fields.projectBackground, // Abstract + projectCountry: fields.projectCountry, projectAims: fields.projectAims, projectMethodology: fields.projectMethodology, projectSummary: fields.projectSummary, diff --git a/apps/ui/src/i18n/locale/en/enSection.json b/apps/ui/src/i18n/locale/en/enSection.json index da32c3e6d..d2bd27d77 100644 --- a/apps/ui/src/i18n/locale/en/enSection.json +++ b/apps/ui/src/i18n/locale/en/enSection.json @@ -101,6 +101,9 @@ "exemplar2": "If possible, include any previous research in this area that you have completed that is relevant." } }, + "country": { + "title": "Which country will the data reside in?" + }, "methodology": { "title": "Use of Data and Methodology:", "example": { diff --git a/apps/ui/src/i18n/locale/fr/frSection.json b/apps/ui/src/i18n/locale/fr/frSection.json index 2991a058a..2d9f5d0f5 100644 --- a/apps/ui/src/i18n/locale/fr/frSection.json +++ b/apps/ui/src/i18n/locale/fr/frSection.json @@ -101,6 +101,9 @@ "exemplar2": "Si possible, incluez toute recherche antérieure pertinente que vous avez effectuée dans ce domaine." } }, + "country": { + "title": "Dans quel pays les données seront-elles hébergées ?" + }, "methodology": { "title": "Utilisation des données et méthodologie :", "example": { diff --git a/apps/ui/src/pages/applications/sections/project.tsx b/apps/ui/src/pages/applications/sections/project.tsx index f18db671e..d39adff07 100644 --- a/apps/ui/src/pages/applications/sections/project.tsx +++ b/apps/ui/src/pages/applications/sections/project.tsx @@ -18,6 +18,7 @@ */ import { zodResolver } from '@hookform/resolvers/zod'; +import { GC_STANDARD_GEOGRAPHIC_AREAS } from '@pcgl-daco/data-model'; import { projectInformationSchema, type ProjectInformationSchemaType } from '@pcgl-daco/validation'; import { Col, Form, Row } from 'antd'; import { createSchemaFieldRule } from 'antd-zod'; @@ -29,6 +30,7 @@ import SectionWrapper from '@/components/layouts/SectionWrapper'; import DacComments from '@/components/pages/application/collapse/DacComments'; import InputBox from '@/components/pages/application/form-components/InputBox'; import LabelWithExample from '@/components/pages/application/form-components/labels/LabelWithExample'; +import SelectBox from '@/components/pages/application/form-components/SelectBox'; import TextAreaBox from '@/components/pages/application/form-components/TextAreaBox'; import SectionContent from '@/components/pages/application/SectionContent'; import SectionFooter from '@/components/pages/application/SectionFooter'; @@ -59,6 +61,7 @@ const Project = () => { projectTitle: state.fields.projectTitle, projectWebsite: state.fields.projectWebsite, projectBackground: state.fields.projectBackground, + projectCountry: state.fields.projectCountry, projectAims: state.fields.projectAims, projectMethodology: state.fields.projectMethodology, projectSummary: state.fields.projectSummary, @@ -94,6 +97,7 @@ const Project = () => { projectWebsite: data.projectWebsite, projectAims: data.projectAims, projectBackground: data.projectBackground, + projectCountry: data.projectCountry, projectMethodology: data.projectMethodology, projectSummary: data.projectSummary, projectPublicationUrls, @@ -176,6 +180,22 @@ const Project = () => { /> + + + { + return { value: areas.iso, label: areas.en }; + })} + initialValue={'CAN'} + rule={rule} + required + disabled={!canEdit} + /> + +