diff --git a/apps/backend/src/learner-info/types.ts b/apps/backend/src/learner-info/types.ts index d57ec22ea..e125bce78 100644 --- a/apps/backend/src/learner-info/types.ts +++ b/apps/backend/src/learner-info/types.ts @@ -8,7 +8,7 @@ export enum InterestArea { } /** - * School of the applicant, includes well-known medical schools, or an other option + * School of the applicant — duplicate enum lives in apps/frontend/src/api/types.ts (keep in sync). */ export enum School { BIDMC_RESIDENTS = 'BIDMC - Residents', diff --git a/apps/frontend/public/assets/school-emblems/.gitkeep b/apps/frontend/public/assets/school-emblems/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/frontend/public/assets/school-emblems/bidmc_residents.png b/apps/frontend/public/assets/school-emblems/bidmc_residents.png new file mode 100644 index 000000000..de7aceb3e Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/bidmc_residents.png differ diff --git a/apps/frontend/public/assets/school-emblems/bmc_addiction_medicine.png b/apps/frontend/public/assets/school-emblems/bmc_addiction_medicine.png new file mode 100644 index 000000000..956651ef0 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/bmc_addiction_medicine.png differ diff --git a/apps/frontend/public/assets/school-emblems/bmc_family_medicine.png b/apps/frontend/public/assets/school-emblems/bmc_family_medicine.png new file mode 100644 index 000000000..cf75fcf04 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/bmc_family_medicine.png differ diff --git a/apps/frontend/public/assets/school-emblems/bmc_som_center_for_multicultural_training_in_psychology.png b/apps/frontend/public/assets/school-emblems/bmc_som_center_for_multicultural_training_in_psychology.png new file mode 100644 index 000000000..b42b165a1 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/bmc_som_center_for_multicultural_training_in_psychology.png differ diff --git a/apps/frontend/public/assets/school-emblems/boston_college_lynch_school_of_ed_and_human_development.png b/apps/frontend/public/assets/school-emblems/boston_college_lynch_school_of_ed_and_human_development.png new file mode 100644 index 000000000..2a3158929 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/boston_college_lynch_school_of_ed_and_human_development.png differ diff --git a/apps/frontend/public/assets/school-emblems/boston_graduate_school_of_psychoanalysis.png b/apps/frontend/public/assets/school-emblems/boston_graduate_school_of_psychoanalysis.png new file mode 100644 index 000000000..5a9427163 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/boston_graduate_school_of_psychoanalysis.png differ diff --git a/apps/frontend/public/assets/school-emblems/boston_medical_center_grayken_center.png b/apps/frontend/public/assets/school-emblems/boston_medical_center_grayken_center.png new file mode 100644 index 000000000..2dc524d40 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/boston_medical_center_grayken_center.png differ diff --git a/apps/frontend/public/assets/school-emblems/boston_university.png b/apps/frontend/public/assets/school-emblems/boston_university.png new file mode 100644 index 000000000..d68350354 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/boston_university.png differ diff --git a/apps/frontend/public/assets/school-emblems/boston_university_som_dgms_physician_assistant_program.png b/apps/frontend/public/assets/school-emblems/boston_university_som_dgms_physician_assistant_program.png new file mode 100644 index 000000000..d68350354 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/boston_university_som_dgms_physician_assistant_program.png differ diff --git a/apps/frontend/public/assets/school-emblems/bu_mental_health_counseling_and_behavioral_medicine_program.png b/apps/frontend/public/assets/school-emblems/bu_mental_health_counseling_and_behavioral_medicine_program.png new file mode 100644 index 000000000..d68350354 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/bu_mental_health_counseling_and_behavioral_medicine_program.png differ diff --git a/apps/frontend/public/assets/school-emblems/bwh_addiction_medicine.png b/apps/frontend/public/assets/school-emblems/bwh_addiction_medicine.png new file mode 100644 index 000000000..0e85ef246 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/bwh_addiction_medicine.png differ diff --git a/apps/frontend/public/assets/school-emblems/capella_university.png b/apps/frontend/public/assets/school-emblems/capella_university.png new file mode 100644 index 000000000..54215676e Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/capella_university.png differ diff --git a/apps/frontend/public/assets/school-emblems/fisher_college.png b/apps/frontend/public/assets/school-emblems/fisher_college.png new file mode 100644 index 000000000..3fe2d6d5d Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/fisher_college.png differ diff --git a/apps/frontend/public/assets/school-emblems/georgetown_university_school_of_medicine.png b/apps/frontend/public/assets/school-emblems/georgetown_university_school_of_medicine.png new file mode 100644 index 000000000..730122a66 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/georgetown_university_school_of_medicine.png differ diff --git a/apps/frontend/public/assets/school-emblems/harvard_medical_school.png b/apps/frontend/public/assets/school-emblems/harvard_medical_school.png new file mode 100644 index 000000000..c1c82092b Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/harvard_medical_school.png differ diff --git a/apps/frontend/public/assets/school-emblems/johns_hopkins.png b/apps/frontend/public/assets/school-emblems/johns_hopkins.png new file mode 100644 index 000000000..aa14f035a Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/johns_hopkins.png differ diff --git a/apps/frontend/public/assets/school-emblems/laboure_college.png b/apps/frontend/public/assets/school-emblems/laboure_college.png new file mode 100644 index 000000000..870d955d3 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/laboure_college.png differ diff --git a/apps/frontend/public/assets/school-emblems/medex_northwest_pa.png b/apps/frontend/public/assets/school-emblems/medex_northwest_pa.png new file mode 100644 index 000000000..a54207094 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/medex_northwest_pa.png differ diff --git a/apps/frontend/public/assets/school-emblems/mgh_addiction_medicine.png b/apps/frontend/public/assets/school-emblems/mgh_addiction_medicine.png new file mode 100644 index 000000000..306007aee Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/mgh_addiction_medicine.png differ diff --git a/apps/frontend/public/assets/school-emblems/mgh_pediatric_residency_program.png b/apps/frontend/public/assets/school-emblems/mgh_pediatric_residency_program.png new file mode 100644 index 000000000..306007aee Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/mgh_pediatric_residency_program.png differ diff --git a/apps/frontend/public/assets/school-emblems/michigan_state_university.png b/apps/frontend/public/assets/school-emblems/michigan_state_university.png new file mode 100644 index 000000000..4ef3c4076 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/michigan_state_university.png differ diff --git a/apps/frontend/public/assets/school-emblems/northeastern.png b/apps/frontend/public/assets/school-emblems/northeastern.png new file mode 100644 index 000000000..39f17d4ec Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/northeastern.png differ diff --git a/apps/frontend/public/assets/school-emblems/northeastern_bouve_college_of_health_sciences.png b/apps/frontend/public/assets/school-emblems/northeastern_bouve_college_of_health_sciences.png new file mode 100644 index 000000000..39f17d4ec Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/northeastern_bouve_college_of_health_sciences.png differ diff --git a/apps/frontend/public/assets/school-emblems/norwich_university.png b/apps/frontend/public/assets/school-emblems/norwich_university.png new file mode 100644 index 000000000..868a0fc35 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/norwich_university.png differ diff --git a/apps/frontend/public/assets/school-emblems/salem_state.png b/apps/frontend/public/assets/school-emblems/salem_state.png new file mode 100644 index 000000000..fbbb6e691 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/salem_state.png differ diff --git a/apps/frontend/public/assets/school-emblems/state_university_of_new_york.png b/apps/frontend/public/assets/school-emblems/state_university_of_new_york.png new file mode 100644 index 000000000..e7c5dc7f9 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/state_university_of_new_york.png differ diff --git a/apps/frontend/public/assets/school-emblems/umass_boston_np_pa.png b/apps/frontend/public/assets/school-emblems/umass_boston_np_pa.png new file mode 100644 index 000000000..4a466202f Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/umass_boston_np_pa.png differ diff --git a/apps/frontend/public/assets/school-emblems/umass_boston_nursing.png b/apps/frontend/public/assets/school-emblems/umass_boston_nursing.png new file mode 100644 index 000000000..4a466202f Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/umass_boston_nursing.png differ diff --git a/apps/frontend/public/assets/school-emblems/university_of_washington_school_of_medicine.png b/apps/frontend/public/assets/school-emblems/university_of_washington_school_of_medicine.png new file mode 100644 index 000000000..5d9f53a75 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/university_of_washington_school_of_medicine.png differ diff --git a/apps/frontend/public/assets/school-emblems/western_governors_university.png b/apps/frontend/public/assets/school-emblems/western_governors_university.png new file mode 100644 index 000000000..36898474c Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/western_governors_university.png differ diff --git a/apps/frontend/public/assets/school-emblems/worcester_state_university.png b/apps/frontend/public/assets/school-emblems/worcester_state_university.png new file mode 100644 index 000000000..73daa4e75 Binary files /dev/null and b/apps/frontend/public/assets/school-emblems/worcester_state_university.png differ diff --git a/apps/frontend/src/api/types.ts b/apps/frontend/src/api/types.ts index 19683d00f..3df3bc7b1 100644 --- a/apps/frontend/src/api/types.ts +++ b/apps/frontend/src/api/types.ts @@ -114,14 +114,42 @@ export interface Application extends AvailabilityFields { } /** - * School of the applicant, includes well-known medical schools, or an other option + * School of the applicant — kept in sync with apps/backend/src/learner-info/types.ts + * TODO: add this to a shared package */ export enum School { - HARVARD_MEDICAL_SCHOOL = 'Harvard Medical School', + BIDMC_RESIDENTS = 'BIDMC - Residents', + BMC_ADDICTION_MEDICINE = 'BMC Addiction Medicine', + BMC_FAMILY_MEDICINE = 'BMC - Family Medicine', + BMC_CENTER_FOR_MULTICULTURAL_TRAINING_IN_PSYCHOLOGY = 'BMC SOM - Center for Multicultural Training in Psychology', + BOSTON_COLLEGE_LYNCH_SCHOOL = 'Boston College - Lynch School of Ed and Human Development', + BOSTON_GRADUATE_SCHOOL_OF_PSYCHOANALYSIS = 'Boston Graduate School of Psychoanalysis', + BOSTON_UNIVERSITY = 'Boston University', + BOSTON_MEDICAL_CENTER_GRAYKEN_CENTER = 'Boston Medical Center Grayken Center', + BOSTON_UNIVERSITY_SCHOOL_OF_MEDICINE_PA = 'Boston University SOM DGMS physician assistant program', + BU_MENTAL_HEALTH_COUNSELING_AND_BEHAVIORAL_MEDICINE = 'BU Mental Health Counseling and Behavioral Medicine Program', + BWH_ADDICTION_MEDICINE = 'BWH Addiction Medicine', + CAPELLA_UNIVERSITY = 'Capella University', + FISHER_COLLEGE = 'Fisher College', + GEORGETOWN_UNIVERSITY_SCHOOL_OF_MEDICINE = 'Georgetown University School of Medicine', JOHNS_HOPKINS = 'Johns Hopkins', - STANFORD_MEDICINE = 'Stanford Medicine', - MAYO_CLINIC = 'Mayo Clinic', + LABOURE_COLLEGE = 'Laboure College', + MEDEX_NORTHWEST_PA = 'Medex Northwest PA', + MGH_ADDICTION_MEDICINE = 'MGH Addiction Medicine', + MGH_PEDIATRIC_RESIDENCY_PROGRAM = 'MGH Pediatric Residency Program', + MICHIGAN_STATE_UNIVERSITY = 'Michigan State University', + NORTHEASTERN = 'Northeastern', + NORTHEASTERN_BOUVE_COLLEGE_OF_HEALTH_SCIENCES = 'Northeastern Bouve College of Health Sciences', + NORWICH_UNIVERSITY = 'Norwich University', + SALEM_STATE = 'Salem State', + STATE_UNIVERSITY_OF_NEW_YORK = 'State University of New York', + UMASS_BOSTON_NP_PA = 'UMass Boston - NP/PA', + UMASS_BOSTON_NURSING = 'UMass Boston - Nursing', + UNIVERSITY_OF_WASHINGTON_SCHOOL_OF_MEDICINE = 'University of Washington School of Medicine', + WESTERN_GOVERNORS_UNIVERSITY = 'Western Governors University', + WORCESTER_STATE_UNIVERSITY = 'Worcester State University', OTHER = 'Other', + DOES_NOT_APPLY = 'Does not apply', } export interface LearnerInfo { diff --git a/apps/frontend/src/components/SchoolAffiliationFrame.tsx b/apps/frontend/src/components/SchoolAffiliationFrame.tsx index d79530e12..cbd0cec87 100644 --- a/apps/frontend/src/components/SchoolAffiliationFrame.tsx +++ b/apps/frontend/src/components/SchoolAffiliationFrame.tsx @@ -1,6 +1,15 @@ import { useEffect, useState } from 'react'; -import { Button, Circle, Flex, Heading, Input, Text } from '@chakra-ui/react'; +import { + Button, + Circle, + Flex, + Heading, + Image, + Input, + Text, +} from '@chakra-ui/react'; import { normalizeDateToDay } from '@utils/applicationFilters'; +import { schoolEmblemPublicUrl } from '@utils/schoolEmblemUrl'; export interface SchoolAffiliationProps { schoolName: string; @@ -47,6 +56,12 @@ const SchoolAffiliationFrame = ({ const [isEditing, setIsEditing] = useState(false); const [saving, setSaving] = useState(false); const [error, setError] = useState(null); + const emblemUrl = schoolEmblemPublicUrl(schoolName); + const [emblemFailed, setEmblemFailed] = useState(false); + + useEffect(() => { + setEmblemFailed(false); + }, [emblemUrl]); useEffect(() => { if (isEditing) return; @@ -136,8 +151,18 @@ const SchoolAffiliationFrame = ({ > {isLearner ? ( <> - - {/* Placeholder for University Logo */} + + {emblemUrl && !emblemFailed ? ( + setEmblemFailed(true)} + /> + ) : null} {/* University Column */} diff --git a/apps/frontend/src/utils/schoolEmblemUrl.ts b/apps/frontend/src/utils/schoolEmblemUrl.ts new file mode 100644 index 000000000..5b96f4a7e --- /dev/null +++ b/apps/frontend/src/utils/schoolEmblemUrl.ts @@ -0,0 +1,13 @@ +export function schoolEmblemPublicUrl(schoolName: string): string | null { + if (!schoolName) { + // if no school name + return null; + } + + const formattedSchoolName = schoolName + .toLowerCase() + .replace(/[^a-z0-9]+/g, '_') // spaces/non-alphanumeric characters => underscore + .replace(/^_+|_+$/g, ''); // trim leading/trailing underscores + + return `/assets/school-emblems/${formattedSchoolName}.png`; +}