From 2b593ffaff18cc23e2727e6f657438baca107c91 Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Wed, 4 Dec 2024 10:43:28 -0800 Subject: [PATCH 01/13] feat: refacto favorite actvity api to support consep --- V46__add_col_to_favourite_activity.sql | 4 ++ .../dto/FavouriteActivityCreateDto.java | 5 ++- .../endpoint/FavouriteActivityEndpoint.java | 2 +- .../entity/FavouriteActivityEntity.java | 6 +++ .../service/FavouriteActivityService.java | 2 + .../src/main/resources/application.properties | 2 +- docker-compose.yml | 37 +++++++------------ .../src/api-service/favouriteActivitiesAPI.ts | 7 +++- .../components/FavouriteActivities/index.tsx | 12 ++++-- frontend/src/components/PageTitle/index.tsx | 16 +++++--- frontend/src/types/FavActivityTypes.ts | 2 + 11 files changed, 59 insertions(+), 36 deletions(-) create mode 100644 V46__add_col_to_favourite_activity.sql diff --git a/V46__add_col_to_favourite_activity.sql b/V46__add_col_to_favourite_activity.sql new file mode 100644 index 000000000..3a2a0c50e --- /dev/null +++ b/V46__add_col_to_favourite_activity.sql @@ -0,0 +1,4 @@ +ALTER TABLE + spar.favourite_activity +ADD + COLUMN is_consep BOOLEAN DEFAULT FALSE NOT NULL; \ No newline at end of file diff --git a/backend/src/main/java/ca/bc/gov/backendstartapi/dto/FavouriteActivityCreateDto.java b/backend/src/main/java/ca/bc/gov/backendstartapi/dto/FavouriteActivityCreateDto.java index 9e51b4045..7d870e966 100644 --- a/backend/src/main/java/ca/bc/gov/backendstartapi/dto/FavouriteActivityCreateDto.java +++ b/backend/src/main/java/ca/bc/gov/backendstartapi/dto/FavouriteActivityCreateDto.java @@ -10,4 +10,7 @@ * @param activity The activity or page name */ @Schema(description = "An object representing the request body when creating a favourite activity") -public record FavouriteActivityCreateDto(@NotNull String activity) {} +public record FavouriteActivityCreateDto( + @NotNull String activity, + @Schema(description = "Indicates whether this activity is a Consep", defaultValue = "false") + Boolean isConsep) {} diff --git a/backend/src/main/java/ca/bc/gov/backendstartapi/endpoint/FavouriteActivityEndpoint.java b/backend/src/main/java/ca/bc/gov/backendstartapi/endpoint/FavouriteActivityEndpoint.java index 438398786..3bc5cbd73 100644 --- a/backend/src/main/java/ca/bc/gov/backendstartapi/endpoint/FavouriteActivityEndpoint.java +++ b/backend/src/main/java/ca/bc/gov/backendstartapi/endpoint/FavouriteActivityEndpoint.java @@ -53,7 +53,7 @@ public class FavouriteActivityEndpoint { description = """ Creates a Favourite Activity to the logged user based on the activity - title or page name. + title or page name, with an optional isConsep flag. """) @ApiResponses( value = { diff --git a/backend/src/main/java/ca/bc/gov/backendstartapi/entity/FavouriteActivityEntity.java b/backend/src/main/java/ca/bc/gov/backendstartapi/entity/FavouriteActivityEntity.java index 9a8bd1bba..977bf1412 100644 --- a/backend/src/main/java/ca/bc/gov/backendstartapi/entity/FavouriteActivityEntity.java +++ b/backend/src/main/java/ca/bc/gov/backendstartapi/entity/FavouriteActivityEntity.java @@ -53,6 +53,12 @@ public class FavouriteActivityEntity { @Column(name = "update_timestamp") private LocalDateTime updateTimestamp; + @Column(name = "is_consep", nullable = false, columnDefinition = "BOOLEAN DEFAULT FALSE") + @Schema( + description = "Defines if the favourite activity is a CONSEP activity", + example = "false") + private Boolean isConsep = false; + public FavouriteActivityEntity() { this.highlighted = false; } diff --git a/backend/src/main/java/ca/bc/gov/backendstartapi/service/FavouriteActivityService.java b/backend/src/main/java/ca/bc/gov/backendstartapi/service/FavouriteActivityService.java index 489f13baf..56042d3d7 100644 --- a/backend/src/main/java/ca/bc/gov/backendstartapi/service/FavouriteActivityService.java +++ b/backend/src/main/java/ca/bc/gov/backendstartapi/service/FavouriteActivityService.java @@ -60,6 +60,8 @@ public FavouriteActivityEntity createUserActivity(FavouriteActivityCreateDto act activityEntity.setUserId(userId); activityEntity.setActivity(activityDto.activity()); + activityEntity.setIsConsep(activityDto.isConsep() != null ? activityDto.isConsep() : false); + FavouriteActivityEntity activityEntitySaved = favouriteActivityRepository.save(activityEntity); SparLog.info("Activity {} created for user {}", activityDto.activity(), userId); return activityEntitySaved; diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index 7a1295878..3838a3277 100644 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -21,7 +21,7 @@ nr-spar-team-email-address = FSA.Delivery.Team2@gov.bc.ca # Database, datasource and JPA spring.datasource.driver-class-name = org.postgresql.Driver -spring.datasource.url = jdbc:postgresql://${POSTGRES_HOST:localhost}:5432/${POSTGRES_DB:postgres} +spring.datasource.url = jdbc:postgresql://${POSTGRES_HOST:localhost}:15432/${POSTGRES_DB:postgres} spring.datasource.username = ${POSTGRES_USER:postgres} spring.datasource.password = ${POSTGRES_PASSWORD:default} spring.datasource.hikari.connectionTimeout = ${DB_POOL_CONN_TIMEOUT:90000} diff --git a/docker-compose.yml b/docker-compose.yml index 2613d53ba..74209d0de 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,9 @@ --- - x-postgres-vars: &postgres-vars - POSTGRES_DB: spar - POSTGRES_HOST: database - POSTGRES_USER: postgres - POSTGRES_PASSWORD: default - POSTGRES_PORT: 5432 + POSTGRES_DB: nr-spar + POSTGRES_HOST: localhost + POSTGRES_USER: nr-spar + POSTGRES_PASSWORD: EXd!X1gd$geIPF6^Ar%hduB2FcHlEOJt x-frontend: &frontend depends_on: @@ -22,30 +20,22 @@ x-frontend: &frontend test: timeout 10s bash -c 'true > /dev/tcp/127.0.0.1/3000' services: - database: - container_name: database - image: postgis/postgis:15-master - environment: - <<: *postgres-vars - volumes: - - "/pgdata" - - "./common/init_db:/init_db" - ports: ["5432:5432"] - healthcheck: - test: psql -q -U $${POSTGRES_USER} -d $${POSTGRES_DB} -c 'SELECT 1' - backend: container_name: backend - depends_on: - database: - condition: service_started + # depends_on: + # database: + # condition: service_started environment: ALLOWED_ORIGINS: "http://localhost:*" FORESTCLIENTAPI_ADDRESS: https://nr-forest-client-api-prod.api.gov.bc.ca/api - FORESTCLIENTAPI_KEY: "${FORESTCLIENTAPI_KEY}" + FORESTCLIENTAPI_KEY: YrmI6eO6M6Xeyw2oRYuDaueYPDOgyBuA ORACLE_SERVER_URL: https://nr-spar-test-oracle-api.apps.silver.devops.gov.bc.ca - POSTGRES_HOST: database + # POSTGRES_HOST: database AWS_COGNITO_ISSUER_URI: "https://cognito-idp.ca-central-1.amazonaws.com/ca-central-1_t2HSZBHur" + POSTGRES_DB: nr-spar + POSTGRES_HOST: host.docker.internal + POSTGRES_USER: nr-spar + POSTGRES_PASSWORD: EXd!X1gd$geIPF6^Ar%hduB2FcHlEOJt <<: *postgres-vars ports: ["8090:8090", "5005:5005"] image: maven:3.9.9-eclipse-temurin-17 @@ -166,3 +156,4 @@ services: depends_on: database: condition: service_started + diff --git a/frontend/src/api-service/favouriteActivitiesAPI.ts b/frontend/src/api-service/favouriteActivitiesAPI.ts index 427c0828c..26f35fa58 100644 --- a/frontend/src/api-service/favouriteActivitiesAPI.ts +++ b/frontend/src/api-service/favouriteActivitiesAPI.ts @@ -3,11 +3,14 @@ import api from './api'; import { FavActivityType, FavActivityPostType } from '../types/FavActivityTypes'; import FavouriteActivityMap from '../config/FavouriteActivityMap'; -export const getFavAct = () => { +export const getFavAct = (isConsep: boolean) => { const url = ApiConfig.favouriteActivities; return api.get(url) .then((response) => { - const data = [...response.data]; + const filteredData = response.data.filter( + (item: FavActivityType) => item.isConsep === isConsep + ); + const data = [...filteredData]; const userList: FavActivityType[] = []; const activityList = Object.keys(FavouriteActivityMap); data.forEach((item) => { diff --git a/frontend/src/components/FavouriteActivities/index.tsx b/frontend/src/components/FavouriteActivities/index.tsx index fdbbedd5e..83e7e8e6a 100644 --- a/frontend/src/components/FavouriteActivities/index.tsx +++ b/frontend/src/components/FavouriteActivities/index.tsx @@ -21,11 +21,17 @@ import { MEDIUM_SCREEN_WIDTH } from '../../shared-constants/shared-constants'; const FavouriteActivities = () => { const windowSize = useWindowSize(); - const favActQueryKey = ['favourite-activities']; + const favActQueryKey = (isConsep: boolean) => ['favourite-activities', isConsep]; const favActQuery = useQuery({ - queryKey: favActQueryKey, - queryFn: getFavAct + queryKey: favActQueryKey(false), + queryFn: ({ queryKey }) => { + const [, isConsep] = queryKey; + if (typeof isConsep === 'boolean') { + return getFavAct(isConsep); + } + throw new Error('Invalid isConsep value'); + } }); return ( diff --git a/frontend/src/components/PageTitle/index.tsx b/frontend/src/components/PageTitle/index.tsx index cdbba60a9..3bbb97d17 100644 --- a/frontend/src/components/PageTitle/index.tsx +++ b/frontend/src/components/PageTitle/index.tsx @@ -27,25 +27,31 @@ const PageTitle = ({ enableFavourite, activity }: PageTitleProps) => { - const favActQueryKey = ['favourite-activities']; + const favActQueryKey = (isConsep: boolean) => ['favourite-activities', isConsep]; const queryClient = useQueryClient(); const favActQuery = useQuery({ - queryKey: favActQueryKey, - queryFn: getFavAct + queryKey: favActQueryKey(false), + queryFn: ({ queryKey }) => { + const [, isConsep] = queryKey; + if (typeof isConsep === 'boolean') { + return getFavAct(isConsep); + } + throw new Error('Invalid isConsep value'); + } }); const highlightFavAct = useMutation({ mutationFn: (actObj: FavActivityPostType) => postFavAct(actObj), onSuccess: () => { - queryClient.invalidateQueries({ queryKey: favActQueryKey }); + queryClient.invalidateQueries(favActQueryKey(false)); } }); const removeFavAct = useMutation({ mutationFn: (id: number) => deleteFavAct(id), onSuccess: () => { - queryClient.invalidateQueries({ queryKey: favActQueryKey }); + queryClient.invalidateQueries(favActQueryKey(false)); } }); diff --git a/frontend/src/types/FavActivityTypes.ts b/frontend/src/types/FavActivityTypes.ts index 0b84ae10a..a0a88fd54 100644 --- a/frontend/src/types/FavActivityTypes.ts +++ b/frontend/src/types/FavActivityTypes.ts @@ -5,8 +5,10 @@ export type FavActivityType = { header: string; link: string; highlighted: boolean; + isConsep?: boolean; } export type FavActivityPostType = { activity: string; + isConsep?: boolean; } From e95dd5350de606ed6ffd5b7d750b1e1a403fceb6 Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Mon, 9 Dec 2024 10:10:56 -0800 Subject: [PATCH 02/13] feat: add fav act page for consep --- .../src/main/resources/application.properties | 2 +- docker-compose.yml | 39 +++++++---- .../src/api-service/favouriteActivitiesAPI.ts | 7 +- .../components/Card/FavouriteCard/index.tsx | 2 +- .../components/Card/FavouriteCard/styles.scss | 9 ++- .../components/FavouriteActivities/index.tsx | 39 ++++++----- .../FavouriteActivities/styles.scss | 6 +- frontend/src/components/PageTitle/index.tsx | 24 +++---- frontend/src/config/FavouriteActivityMap.ts | 69 +++++++++++++++++-- frontend/src/routes/constants.ts | 3 +- frontend/src/routes/index.tsx | 7 ++ .../views/CONSEP/FavouriteActivity/index.tsx | 33 +++++++++ .../CONSEP/FavouriteActivity/styles.scss | 32 +++++++++ frontend/src/views/Dashboard/dashboard.tsx | 2 +- 14 files changed, 212 insertions(+), 62 deletions(-) create mode 100644 frontend/src/views/CONSEP/FavouriteActivity/index.tsx create mode 100644 frontend/src/views/CONSEP/FavouriteActivity/styles.scss diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index 3838a3277..7a1295878 100644 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -21,7 +21,7 @@ nr-spar-team-email-address = FSA.Delivery.Team2@gov.bc.ca # Database, datasource and JPA spring.datasource.driver-class-name = org.postgresql.Driver -spring.datasource.url = jdbc:postgresql://${POSTGRES_HOST:localhost}:15432/${POSTGRES_DB:postgres} +spring.datasource.url = jdbc:postgresql://${POSTGRES_HOST:localhost}:5432/${POSTGRES_DB:postgres} spring.datasource.username = ${POSTGRES_USER:postgres} spring.datasource.password = ${POSTGRES_PASSWORD:default} spring.datasource.hikari.connectionTimeout = ${DB_POOL_CONN_TIMEOUT:90000} diff --git a/docker-compose.yml b/docker-compose.yml index 74209d0de..b017c8ea1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,9 +1,11 @@ --- + x-postgres-vars: &postgres-vars - POSTGRES_DB: nr-spar - POSTGRES_HOST: localhost - POSTGRES_USER: nr-spar - POSTGRES_PASSWORD: EXd!X1gd$geIPF6^Ar%hduB2FcHlEOJt + POSTGRES_DB: spar + POSTGRES_HOST: database + POSTGRES_USER: postgres + POSTGRES_PASSWORD: default + POSTGRES_PORT: 5432 x-frontend: &frontend depends_on: @@ -20,22 +22,30 @@ x-frontend: &frontend test: timeout 10s bash -c 'true > /dev/tcp/127.0.0.1/3000' services: + database: + container_name: database + image: postgis/postgis:15-master + environment: + <<: *postgres-vars + volumes: + - "/pgdata" + - "./common/init_db:/init_db" + ports: ["5432:5432"] + healthcheck: + test: psql -q -U $${POSTGRES_USER} -d $${POSTGRES_DB} -c 'SELECT 1' + backend: container_name: backend - # depends_on: - # database: - # condition: service_started + depends_on: + database: + condition: service_started environment: ALLOWED_ORIGINS: "http://localhost:*" FORESTCLIENTAPI_ADDRESS: https://nr-forest-client-api-prod.api.gov.bc.ca/api - FORESTCLIENTAPI_KEY: YrmI6eO6M6Xeyw2oRYuDaueYPDOgyBuA + FORESTCLIENTAPI_KEY: "${FORESTCLIENTAPI_KEY}" ORACLE_SERVER_URL: https://nr-spar-test-oracle-api.apps.silver.devops.gov.bc.ca - # POSTGRES_HOST: database + POSTGRES_HOST: database AWS_COGNITO_ISSUER_URI: "https://cognito-idp.ca-central-1.amazonaws.com/ca-central-1_t2HSZBHur" - POSTGRES_DB: nr-spar - POSTGRES_HOST: host.docker.internal - POSTGRES_USER: nr-spar - POSTGRES_PASSWORD: EXd!X1gd$geIPF6^Ar%hduB2FcHlEOJt <<: *postgres-vars ports: ["8090:8090", "5005:5005"] image: maven:3.9.9-eclipse-temurin-17 @@ -155,5 +165,4 @@ services: ORACLE_SYNC_USER: ${ORACLE_SYNC_USER:-proxy_fsa_spar_read_only_user} depends_on: database: - condition: service_started - + condition: service_started \ No newline at end of file diff --git a/frontend/src/api-service/favouriteActivitiesAPI.ts b/frontend/src/api-service/favouriteActivitiesAPI.ts index 26f35fa58..427c0828c 100644 --- a/frontend/src/api-service/favouriteActivitiesAPI.ts +++ b/frontend/src/api-service/favouriteActivitiesAPI.ts @@ -3,14 +3,11 @@ import api from './api'; import { FavActivityType, FavActivityPostType } from '../types/FavActivityTypes'; import FavouriteActivityMap from '../config/FavouriteActivityMap'; -export const getFavAct = (isConsep: boolean) => { +export const getFavAct = () => { const url = ApiConfig.favouriteActivities; return api.get(url) .then((response) => { - const filteredData = response.data.filter( - (item: FavActivityType) => item.isConsep === isConsep - ); - const data = [...filteredData]; + const data = [...response.data]; const userList: FavActivityType[] = []; const activityList = Object.keys(FavouriteActivityMap); data.forEach((item) => { diff --git a/frontend/src/components/Card/FavouriteCard/index.tsx b/frontend/src/components/Card/FavouriteCard/index.tsx index ace32f568..c6ca94bbe 100644 --- a/frontend/src/components/Card/FavouriteCard/index.tsx +++ b/frontend/src/components/Card/FavouriteCard/index.tsx @@ -90,7 +90,7 @@ const FavouriteCard = ({ return ( navigate(favObject.link)} tabIndex={0} aria-label={`Go to ${favObject.header}`} diff --git a/frontend/src/components/Card/FavouriteCard/styles.scss b/frontend/src/components/Card/FavouriteCard/styles.scss index 9faf39824..0a79a3179 100644 --- a/frontend/src/components/Card/FavouriteCard/styles.scss +++ b/frontend/src/components/Card/FavouriteCard/styles.scss @@ -35,7 +35,6 @@ align-items: flex-start; padding: 1.25rem 1rem; margin: 0.5rem; - width: 14.625rem; height: 9.875rem; background: var(--#{vars.$bcgov-prefix}-layer-02); border: 1px solid var(--#{vars.$bcgov-prefix}-border-subtle-02); @@ -50,6 +49,14 @@ cursor: pointer; } +.fav-card-main-spar { + width: 14.625rem; +} + +.fav-card-main-consep { + width: 18.281rem; +} + .fav-card-content { display: inline-block; margin-top: auto; diff --git a/frontend/src/components/FavouriteActivities/index.tsx b/frontend/src/components/FavouriteActivities/index.tsx index 83e7e8e6a..f01aff318 100644 --- a/frontend/src/components/FavouriteActivities/index.tsx +++ b/frontend/src/components/FavouriteActivities/index.tsx @@ -18,29 +18,29 @@ import useWindowSize from '../../hooks/UseWindowSize'; import './styles.scss'; import { MEDIUM_SCREEN_WIDTH } from '../../shared-constants/shared-constants'; -const FavouriteActivities = () => { +interface FavouriteActivitiesProps { + isConsep: boolean; +} + +const FavouriteActivities: React.FC = ({ isConsep }) => { const windowSize = useWindowSize(); - const favActQueryKey = (isConsep: boolean) => ['favourite-activities', isConsep]; + const favActQueryKey = ['favourite-activities']; const favActQuery = useQuery({ - queryKey: favActQueryKey(false), - queryFn: ({ queryKey }) => { - const [, isConsep] = queryKey; - if (typeof isConsep === 'boolean') { - return getFavAct(isConsep); - } - throw new Error('Invalid isConsep value'); - } + queryKey: favActQueryKey, + queryFn: getFavAct }); return ( + {!isConsep && (

My favourite activities

@@ -54,7 +54,9 @@ const FavouriteActivities = () => {
- + )} + + { favActQuery.isLoading ? : null @@ -71,11 +73,14 @@ const FavouriteActivities = () => { description="You can favourite your most used activities by clicking on the heart icon inside each page" /> - ) : favActQuery.data.map((favObject) => ( - + ) : favActQuery.data.filter((fav) => fav.isConsep === isConsep).map((favObject) => ( + + + + )) ) } diff --git a/frontend/src/components/FavouriteActivities/styles.scss b/frontend/src/components/FavouriteActivities/styles.scss index 1f4a69440..69dc49f2b 100644 --- a/frontend/src/components/FavouriteActivities/styles.scss +++ b/frontend/src/components/FavouriteActivities/styles.scss @@ -3,8 +3,6 @@ @use '@carbon/type'; .favourite-activities { - background-color: var(--#{vars.$bcgov-prefix}-layer-01); - .favourite-activities-title { h2 { @include type.type-style('heading-03'); @@ -48,3 +46,7 @@ .favourite-activities-padding{ padding: 2rem; } + +.favourite-activities-with-background { + background-color: var(--#{vars.$bcgov-prefix}-layer-01); +} \ No newline at end of file diff --git a/frontend/src/components/PageTitle/index.tsx b/frontend/src/components/PageTitle/index.tsx index 3bbb97d17..9f707e35e 100644 --- a/frontend/src/components/PageTitle/index.tsx +++ b/frontend/src/components/PageTitle/index.tsx @@ -19,43 +19,41 @@ interface PageTitleProps { subtitle?: string | React.ReactNode; enableFavourite?: boolean; activity?: string; + isConsep?: boolean; } const PageTitle = ({ title, subtitle, enableFavourite, - activity + activity, + isConsep = false }: PageTitleProps) => { - const favActQueryKey = (isConsep: boolean) => ['favourite-activities', isConsep]; + const favActQueryKey = ['favourite-activities']; const queryClient = useQueryClient(); const favActQuery = useQuery({ - queryKey: favActQueryKey(false), - queryFn: ({ queryKey }) => { - const [, isConsep] = queryKey; - if (typeof isConsep === 'boolean') { - return getFavAct(isConsep); - } - throw new Error('Invalid isConsep value'); - } + queryKey: favActQueryKey, + queryFn: getFavAct }); const highlightFavAct = useMutation({ mutationFn: (actObj: FavActivityPostType) => postFavAct(actObj), onSuccess: () => { - queryClient.invalidateQueries(favActQueryKey(false)); + queryClient.invalidateQueries(favActQueryKey); } }); const removeFavAct = useMutation({ mutationFn: (id: number) => deleteFavAct(id), onSuccess: () => { - queryClient.invalidateQueries(favActQueryKey(false)); + queryClient.invalidateQueries(favActQueryKey); } }); - const thisFavAct = favActQuery?.data?.filter((act) => act.type === activity)[0]; + const thisFavAct = favActQuery?.data?.filter( + (act) => act.type === activity && act.isConsep === isConsep + )[0]; const isFavourited = thisFavAct !== undefined; diff --git a/frontend/src/config/FavouriteActivityMap.ts b/frontend/src/config/FavouriteActivityMap.ts index b84d88002..539692ac9 100644 --- a/frontend/src/config/FavouriteActivityMap.ts +++ b/frontend/src/config/FavouriteActivityMap.ts @@ -8,7 +8,8 @@ const FavouriteActivityMap: Record = { image: 'SoilMoistureField', header: 'Seedlots', link: ROUTES.SEEDLOTS, - highlighted: false + highlighted: false, + isConsep: false }, registerAClass: { id: -1, @@ -16,7 +17,8 @@ const FavouriteActivityMap: Record = { image: 'TaskAdd', header: 'Create A-class seedlot', link: ROUTES.SEEDLOTS_A_CLASS_CREATION, - highlighted: false + highlighted: false, + isConsep: false }, mySeedlots: { id: -1, @@ -24,7 +26,8 @@ const FavouriteActivityMap: Record = { image: 'TableSplit', header: 'My Seedlots', link: ROUTES.MY_SEEDLOTS, - highlighted: false + highlighted: false, + isConsep: false }, reviewSeedlots: { id: -1, @@ -32,7 +35,8 @@ const FavouriteActivityMap: Record = { image: 'TableSplit', header: 'Review Seedlots', link: ROUTES.TSC_SEEDLOTS_TABLE, - highlighted: false + highlighted: false, + isConsep: false }, unknown: { id: -1, @@ -40,7 +44,62 @@ const FavouriteActivityMap: Record = { image: 'Unknown', header: 'Unknown activity: ', link: '#', - highlighted: false + highlighted: false, + isConsep: false + }, + testingActivities: { + id: -1, + type: 'testingActivities', + image: 'TableSplit', + header: 'Testing Activities', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + maintainGerminationTray: { + id: -1, + type: 'maintainGerminationTray', + image: 'TableSplit', + header: 'Maintain Germination Tray', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + withdrawalDate: { + id: -1, + type: 'withdrawalDate', + image: 'TableSplit', + header: 'Withdrawal Date', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + testingRequestsReport: { + id: -1, + type: 'testingRequestsReport', + image: 'TableSplit', + header: 'Testing Requests Report', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + reviewPendingRequests: { + id: -1, + type: 'reviewPendingRequests', + image: 'TableSplit', + header: 'Review Pending Requests', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + germCountPredictions: { + id: -1, + type: 'germCountPredictions', + image: 'TableSplit', + header: 'Germ Count Predictions', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true } }; diff --git a/frontend/src/routes/constants.ts b/frontend/src/routes/constants.ts index 83f19bc3f..08f444332 100644 --- a/frontend/src/routes/constants.ts +++ b/frontend/src/routes/constants.ts @@ -14,7 +14,8 @@ const ROUTES = { TSC_SEEDLOTS_TABLE: '/seedlots/tsc-admin-seedlots', FOUR_OH_FOUR: '/404', FOUR_OH_THREE: '/403', - SERVICE_STATUS: '/service-status' + SERVICE_STATUS: '/service-status', + CONSEP_FAVOURITE_ACTIVITIES: '/consep/favourite-activities' }; export default ROUTES; diff --git a/frontend/src/routes/index.tsx b/frontend/src/routes/index.tsx index 323ae955c..4b2fa1e8f 100644 --- a/frontend/src/routes/index.tsx +++ b/frontend/src/routes/index.tsx @@ -15,6 +15,7 @@ import SeedlotReview from '../views/Seedlot/SeedlotReview'; import SeedlotRegFormClassA from '../views/Seedlot/SeedlotRegFormClassA'; import ReviewSeedlots from '../views/Seedlot/ReviewSeedlots'; import FourOhThree from '../views/ErrorViews/FourOhThree'; +import FavouriteActivities from '../views/CONSEP/FavouriteActivity'; const BrowserRoutes: Array = [ // Ensures that root paths get redirected to @@ -97,6 +98,12 @@ const BrowserRoutes: Array = [ element: ( ) + }, + { + path: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + element: ( + + ) } ]; diff --git a/frontend/src/views/CONSEP/FavouriteActivity/index.tsx b/frontend/src/views/CONSEP/FavouriteActivity/index.tsx new file mode 100644 index 000000000..382a0a9d3 --- /dev/null +++ b/frontend/src/views/CONSEP/FavouriteActivity/index.tsx @@ -0,0 +1,33 @@ +import React from 'react'; + +import { + FlexGrid, + Row, + Column +} from '@carbon/react'; + +import PageTitle from '../../../components/PageTitle'; +import FavouriteActivities from '../../../components/FavouriteActivities'; + +import './styles.scss'; + +const FavouriteActivity = () => ( + + + + + + + + +
+ +
+
+
+
+); + +export default FavouriteActivity; diff --git a/frontend/src/views/CONSEP/FavouriteActivity/styles.scss b/frontend/src/views/CONSEP/FavouriteActivity/styles.scss new file mode 100644 index 000000000..3c6112b41 --- /dev/null +++ b/frontend/src/views/CONSEP/FavouriteActivity/styles.scss @@ -0,0 +1,32 @@ +@use '@bcgov-nr/nr-theme/design-tokens/variables.scss' as vars; +@use '@carbon/type'; + +.dashboard-page { + padding: 0 0 2.5rem 0; + + .dashboard-row { + margin-bottom: 2rem; + } + + div.title-section { + padding-left: 2.5rem; + padding-right: 2.5rem; + } + + .#{vars.$bcgov-prefix}--row { + margin-left: 0; + margin-right: 0; + } + + .#{vars.$bcgov-prefix}--col { + padding-left: 0; + padding-right: 0; + } +} + +p.fav-act-page-title-large { + @include type.type-style('heading-06'); + white-space: nowrap; + max-width: 12.5rem; + margin-left: 2.5rem; +} diff --git a/frontend/src/views/Dashboard/dashboard.tsx b/frontend/src/views/Dashboard/dashboard.tsx index 456e36f17..14136414b 100644 --- a/frontend/src/views/Dashboard/dashboard.tsx +++ b/frontend/src/views/Dashboard/dashboard.tsx @@ -23,7 +23,7 @@ const Dashboard = () => (
- +
From f0ce2098275a9f39b55b798466c37cd8a001cd47 Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Mon, 9 Dec 2024 10:16:18 -0800 Subject: [PATCH 03/13] feat: add migration for consep favorite activity --- .../resources/db/migration/V47__add_col_to_favourite_activity.sql | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename V46__add_col_to_favourite_activity.sql => backend/src/main/resources/db/migration/V47__add_col_to_favourite_activity.sql (100%) diff --git a/V46__add_col_to_favourite_activity.sql b/backend/src/main/resources/db/migration/V47__add_col_to_favourite_activity.sql similarity index 100% rename from V46__add_col_to_favourite_activity.sql rename to backend/src/main/resources/db/migration/V47__add_col_to_favourite_activity.sql From c7b62aa348a8855c27e1c87bac99ccf038d9101a Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Mon, 9 Dec 2024 20:23:55 -0800 Subject: [PATCH 04/13] feat: add all the activities in consep --- frontend/src/config/FavouriteActivityMap.ts | 408 +++++++++++++++++++- 1 file changed, 393 insertions(+), 15 deletions(-) diff --git a/frontend/src/config/FavouriteActivityMap.ts b/frontend/src/config/FavouriteActivityMap.ts index 539692ac9..5e7aa34f0 100644 --- a/frontend/src/config/FavouriteActivityMap.ts +++ b/frontend/src/config/FavouriteActivityMap.ts @@ -47,47 +47,101 @@ const FavouriteActivityMap: Record = { highlighted: false, isConsep: false }, - testingActivities: { + actualGerminationCount: { id: -1, - type: 'testingActivities', + type: 'actualGerminationCount', image: 'TableSplit', - header: 'Testing Activities', + header: 'Actual Germination Count', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, isConsep: true }, - maintainGerminationTray: { + calculateCropAverage: { id: -1, - type: 'maintainGerminationTray', + type: 'calculateCropAverage', image: 'TableSplit', - header: 'Maintain Germination Tray', + header: 'Calculate Crop Average', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, isConsep: true }, - withdrawalDate: { + cancelledRequestsReport: { id: -1, - type: 'withdrawalDate', + type: 'cancelledRequestsReport', image: 'TableSplit', - header: 'Withdrawal Date', + header: 'Cancelled Requests Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, isConsep: true }, - testingRequestsReport: { + coneAndSeedProcessingReport: { id: -1, - type: 'testingRequestsReport', + type: 'coneAndSeedProcessingReport', image: 'TableSplit', - header: 'Testing Requests Report', + header: 'Cone and Seed Processing Report', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + coneAndSeedShipmentReceipt: { + id: -1, + type: 'coneAndSeedShipmentReceipt', + image: 'TableSplit', + header: 'Cone and Seed Shipment Receipt', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + createGerminationTray: { + id: -1, + type: 'createGerminationTray', + image: 'TableSplit', + header: 'Create Germination Tray', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + cspRequest: { + id: -1, + type: 'cspRequest', + image: 'TableSplit', + header: 'CSP Request', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + doNotStartList: { + id: -1, + type: 'doNotStartList', + image: 'TableSplit', + header: 'Do Not Start List', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + familyLot: { + id: -1, + type: 'familyLot', + image: 'TableSplit', + header: 'Family Lot', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + familyLotSummaryReport: { + id: -1, + type: 'familyLotSummaryReport', + image: 'TableSplit', + header: 'Family Lot Summary Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, isConsep: true }, - reviewPendingRequests: { + germinationSpeciesAverage: { id: -1, - type: 'reviewPendingRequests', + type: 'germinationSpeciesAverage', image: 'TableSplit', - header: 'Review Pending Requests', + header: 'Germination Species Average', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, isConsep: true @@ -100,6 +154,330 @@ const FavouriteActivityMap: Record = { link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, isConsep: true + }, + identifyAvailableLongTermLocation: { + id: -1, + type: 'identifyAvailableLongTermLocation', + image: 'TableSplit', + header: 'Identify Available Long-Term Location', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + inHouseInventory: { + id: -1, + type: 'inHouseInventory', + image: 'TableSplit', + header: 'In-House Inventory', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + inventoryLocationReport: { + id: -1, + type: 'inventoryLocationReport', + image: 'TableSplit', + header: 'Inventory Location Report', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + kilnPrograms: { + id: -1, + type: 'kilnPrograms', + image: 'TableSplit', + header: 'Kiln Programs', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + maintainClientLocation: { + id: -1, + type: 'maintainClientLocation', + image: 'TableSplit', + header: 'Maintain Client Location', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + maintainGerminationTrayScreen: { + id: -1, + type: 'maintainGerminationTrayScreen', + image: 'TableSplit', + header: 'Maintain Germination Tray Screen', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + maintainLocalContacts: { + id: -1, + type: 'maintainLocalContacts', + image: 'TableSplit', + header: 'Maintain Local Contacts', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + maintainStandardActivities: { + id: -1, + type: 'maintainStandardActivities', + image: 'TableSplit', + header: 'Maintain Standard Activities', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + maintainStatHolidays: { + id: -1, + type: 'maintainStatHolidays', + image: 'TableSplit', + header: 'Maintain Stat Holidays', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + maintainWorkPlans: { + id: -1, + type: 'maintainWorkPlans', + image: 'TableSplit', + header: 'Maintain Work Plans', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + manualMoistureContent: { + id: -1, + type: 'manualMoistureContent', + image: 'TableSplit', + header: 'Manual Moisture Content', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + processingActivities: { + id: -1, + type: 'processingActivities', + image: 'TableSplit', + header: 'Processing Activities', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + recordStockCountResults: { + id: -1, + type: 'recordStockCountResults', + image: 'TableSplit', + header: 'Record Stock Count Results', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + requestChangesReport: { + id: -1, + type: 'requestChangesReport', + image: 'TableSplit', + header: 'Request Changes Report', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + returnedSeed: { + id: -1, + type: 'returnedSeed', + image: 'TableSplit', + header: 'Returned Seed', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + reviewPendingRequest: { + id: -1, + type: 'reviewPendingRequest', + image: 'TableSplit', + header: 'Review Pending Request', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + scheduleOrReviseRequestItemActivity: { + id: -1, + type: 'scheduleOrReviseRequestItemActivity', + image: 'TableSplit', + header: 'Schedule or Revise Request Item Activity', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + seedAndFamilyLotReport: { + id: -1, + type: 'seedAndFamilyLotReport', + image: 'TableSplit', + header: 'Seed and Family Lot Report', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + seedSaleOrTransferActivitiesScreen: { + id: -1, + type: 'seedSaleOrTransferActivitiesScreen', + image: 'TableSplit', + header: 'Seed Sale or Transfer Activities Screen', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + seedlotCharacteristics: { + id: -1, + type: 'seedlotCharacteristics', + image: 'TableSplit', + header: 'Seedlot Characteristics', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + seedlotLocationHistoryReport: { + id: -1, + type: 'seedlotLocationHistoryReport', + image: 'TableSplit', + header: 'Seedlot Location History Report', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + seedlotObservationHistory: { + id: -1, + type: 'seedlotObservationHistory', + image: 'TableSplit', + header: 'Seedlot Observation History', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + seedlotOrRequestItemInventoryLocation: { + id: -1, + type: 'seedlotOrRequestItemInventoryLocation', + image: 'TableSplit', + header: 'Seedlot or Request Item Inventory Location', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + seedlotOwner: { + id: -1, + type: 'seedlotOwner', + image: 'TableSplit', + header: 'Seedlot Owner', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + seedlotTestHistoryReport: { + id: -1, + type: 'seedlotTestHistoryReport', + image: 'TableSplit', + header: 'Seedlot Test History Report', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + stockCountStatusReport: { + id: -1, + type: 'stockCountStatusReport', + image: 'TableSplit', + header: 'Stock Count Status Report', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + testingActivitiesList: { + id: -1, + type: 'testingActivitiesList', + image: 'TableSplit', + header: 'Testing Activities List', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + testingActivitiesSummaryReport: { + id: -1, + type: 'testingActivitiesSummaryReport', + image: 'TableSplit', + header: 'Testing Activities Summary Report', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + testingRequestsReport: { + id: -1, + type: 'testingRequestsReport', + image: 'TableSplit', + header: 'Testing Requests Report', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + waybills: { + id: -1, + type: 'waybills', + image: 'TableSplit', + header: 'Waybills', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + withdrawalDate: { + id: -1, + type: 'withdrawalDate', + image: 'TableSplit', + header: 'Withdrawal Date', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + withdrawalRequest: { + id: -1, + type: 'withdrawalRequest', + image: 'TableSplit', + header: 'Withdrawal Request', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + withdrawalRequestDetailsReport: { + id: -1, + type: 'withdrawalRequestDetailsReport', + image: 'TableSplit', + header: 'Withdrawal Request Details Report', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + withdrawalRequestReport: { + id: -1, + type: 'withdrawalRequestReport', + image: 'TableSplit', + header: 'Withdrawal Request Report', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + withdrawalResults: { + id: -1, + type: 'withdrawalResults', + image: 'TableSplit', + header: 'Withdrawal Results', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true + }, + withdrawalResultObservations: { + id: -1, + type: 'withdrawalResultObservations', + image: 'TableSplit', + header: 'Withdrawal Result Observations', + link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, + highlighted: false, + isConsep: true } }; From 03555f688fd7736411c68220bba3f1e8046ee986 Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Mon, 9 Dec 2024 20:31:03 -0800 Subject: [PATCH 05/13] feat: add department key in favActivityTypes --- frontend/src/config/FavouriteActivityMap.ts | 144 +++++++++++++------- frontend/src/types/FavActivityTypes.ts | 1 + 2 files changed, 97 insertions(+), 48 deletions(-) diff --git a/frontend/src/config/FavouriteActivityMap.ts b/frontend/src/config/FavouriteActivityMap.ts index 5e7aa34f0..2a64df4a3 100644 --- a/frontend/src/config/FavouriteActivityMap.ts +++ b/frontend/src/config/FavouriteActivityMap.ts @@ -54,7 +54,8 @@ const FavouriteActivityMap: Record = { header: 'Actual Germination Count', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, calculateCropAverage: { id: -1, @@ -63,7 +64,8 @@ const FavouriteActivityMap: Record = { header: 'Calculate Crop Average', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Administrative' }, cancelledRequestsReport: { id: -1, @@ -72,7 +74,8 @@ const FavouriteActivityMap: Record = { header: 'Cancelled Requests Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, coneAndSeedProcessingReport: { id: -1, @@ -81,7 +84,8 @@ const FavouriteActivityMap: Record = { header: 'Cone and Seed Processing Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Processing' }, coneAndSeedShipmentReceipt: { id: -1, @@ -90,7 +94,8 @@ const FavouriteActivityMap: Record = { header: 'Cone and Seed Shipment Receipt', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, createGerminationTray: { id: -1, @@ -99,7 +104,8 @@ const FavouriteActivityMap: Record = { header: 'Create Germination Tray', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, cspRequest: { id: -1, @@ -108,7 +114,8 @@ const FavouriteActivityMap: Record = { header: 'CSP Request', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Processing' }, doNotStartList: { id: -1, @@ -117,7 +124,8 @@ const FavouriteActivityMap: Record = { header: 'Do Not Start List', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, familyLot: { id: -1, @@ -126,7 +134,8 @@ const FavouriteActivityMap: Record = { header: 'Family Lot', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Seed and family lot' }, familyLotSummaryReport: { id: -1, @@ -135,7 +144,8 @@ const FavouriteActivityMap: Record = { header: 'Family Lot Summary Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Seed and family lot' }, germinationSpeciesAverage: { id: -1, @@ -144,7 +154,8 @@ const FavouriteActivityMap: Record = { header: 'Germination Species Average', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, germCountPredictions: { id: -1, @@ -153,7 +164,8 @@ const FavouriteActivityMap: Record = { header: 'Germ Count Predictions', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, identifyAvailableLongTermLocation: { id: -1, @@ -162,7 +174,8 @@ const FavouriteActivityMap: Record = { header: 'Identify Available Long-Term Location', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Seed and family lot' }, inHouseInventory: { id: -1, @@ -171,7 +184,8 @@ const FavouriteActivityMap: Record = { header: 'In-House Inventory', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, inventoryLocationReport: { id: -1, @@ -180,7 +194,8 @@ const FavouriteActivityMap: Record = { header: 'Inventory Location Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, kilnPrograms: { id: -1, @@ -189,7 +204,8 @@ const FavouriteActivityMap: Record = { header: 'Kiln Programs', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Administrative' }, maintainClientLocation: { id: -1, @@ -198,7 +214,8 @@ const FavouriteActivityMap: Record = { header: 'Maintain Client Location', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Administrative' }, maintainGerminationTrayScreen: { id: -1, @@ -207,7 +224,8 @@ const FavouriteActivityMap: Record = { header: 'Maintain Germination Tray Screen', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, maintainLocalContacts: { id: -1, @@ -216,7 +234,8 @@ const FavouriteActivityMap: Record = { header: 'Maintain Local Contacts', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Administrative' }, maintainStandardActivities: { id: -1, @@ -225,7 +244,8 @@ const FavouriteActivityMap: Record = { header: 'Maintain Standard Activities', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Administrative' }, maintainStatHolidays: { id: -1, @@ -234,7 +254,8 @@ const FavouriteActivityMap: Record = { header: 'Maintain Stat Holidays', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, maintainWorkPlans: { id: -1, @@ -243,7 +264,8 @@ const FavouriteActivityMap: Record = { header: 'Maintain Work Plans', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Administrative' }, manualMoistureContent: { id: -1, @@ -252,7 +274,8 @@ const FavouriteActivityMap: Record = { header: 'Manual Moisture Content', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, processingActivities: { id: -1, @@ -261,7 +284,8 @@ const FavouriteActivityMap: Record = { header: 'Processing Activities', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Processing' }, recordStockCountResults: { id: -1, @@ -270,7 +294,8 @@ const FavouriteActivityMap: Record = { header: 'Record Stock Count Results', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Seed and family lot' }, requestChangesReport: { id: -1, @@ -279,7 +304,8 @@ const FavouriteActivityMap: Record = { header: 'Request Changes Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, returnedSeed: { id: -1, @@ -288,7 +314,8 @@ const FavouriteActivityMap: Record = { header: 'Returned Seed', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, reviewPendingRequest: { id: -1, @@ -297,7 +324,8 @@ const FavouriteActivityMap: Record = { header: 'Review Pending Request', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, scheduleOrReviseRequestItemActivity: { id: -1, @@ -306,7 +334,8 @@ const FavouriteActivityMap: Record = { header: 'Schedule or Revise Request Item Activity', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, seedAndFamilyLotReport: { id: -1, @@ -315,7 +344,8 @@ const FavouriteActivityMap: Record = { header: 'Seed and Family Lot Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Seed and family lot' }, seedSaleOrTransferActivitiesScreen: { id: -1, @@ -324,7 +354,8 @@ const FavouriteActivityMap: Record = { header: 'Seed Sale or Transfer Activities Screen', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, seedlotCharacteristics: { id: -1, @@ -333,7 +364,8 @@ const FavouriteActivityMap: Record = { header: 'Seedlot Characteristics', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Seed and family lot' }, seedlotLocationHistoryReport: { id: -1, @@ -342,7 +374,8 @@ const FavouriteActivityMap: Record = { header: 'Seedlot Location History Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, seedlotObservationHistory: { id: -1, @@ -351,7 +384,8 @@ const FavouriteActivityMap: Record = { header: 'Seedlot Observation History', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Seed and family lot' }, seedlotOrRequestItemInventoryLocation: { id: -1, @@ -360,7 +394,8 @@ const FavouriteActivityMap: Record = { header: 'Seedlot or Request Item Inventory Location', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Seed and family lot' }, seedlotOwner: { id: -1, @@ -369,7 +404,8 @@ const FavouriteActivityMap: Record = { header: 'Seedlot Owner', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Seed and family lot' }, seedlotTestHistoryReport: { id: -1, @@ -378,7 +414,8 @@ const FavouriteActivityMap: Record = { header: 'Seedlot Test History Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, stockCountStatusReport: { id: -1, @@ -387,7 +424,8 @@ const FavouriteActivityMap: Record = { header: 'Stock Count Status Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, testingActivitiesList: { id: -1, @@ -396,7 +434,8 @@ const FavouriteActivityMap: Record = { header: 'Testing Activities List', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, testingActivitiesSummaryReport: { id: -1, @@ -405,7 +444,8 @@ const FavouriteActivityMap: Record = { header: 'Testing Activities Summary Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, testingRequestsReport: { id: -1, @@ -414,7 +454,8 @@ const FavouriteActivityMap: Record = { header: 'Testing Requests Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, waybills: { id: -1, @@ -423,7 +464,8 @@ const FavouriteActivityMap: Record = { header: 'Waybills', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, withdrawalDate: { id: -1, @@ -432,7 +474,8 @@ const FavouriteActivityMap: Record = { header: 'Withdrawal Date', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Testing' }, withdrawalRequest: { id: -1, @@ -441,7 +484,8 @@ const FavouriteActivityMap: Record = { header: 'Withdrawal Request', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, withdrawalRequestDetailsReport: { id: -1, @@ -450,7 +494,8 @@ const FavouriteActivityMap: Record = { header: 'Withdrawal Request Details Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, withdrawalRequestReport: { id: -1, @@ -459,7 +504,8 @@ const FavouriteActivityMap: Record = { header: 'Withdrawal Request Report', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, withdrawalResults: { id: -1, @@ -468,7 +514,8 @@ const FavouriteActivityMap: Record = { header: 'Withdrawal Results', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' }, withdrawalResultObservations: { id: -1, @@ -477,7 +524,8 @@ const FavouriteActivityMap: Record = { header: 'Withdrawal Result Observations', link: ROUTES.CONSEP_FAVOURITE_ACTIVITIES, highlighted: false, - isConsep: true + isConsep: true, + department: 'Withdrawal' } }; diff --git a/frontend/src/types/FavActivityTypes.ts b/frontend/src/types/FavActivityTypes.ts index a0a88fd54..ae172842a 100644 --- a/frontend/src/types/FavActivityTypes.ts +++ b/frontend/src/types/FavActivityTypes.ts @@ -6,6 +6,7 @@ export type FavActivityType = { link: string; highlighted: boolean; isConsep?: boolean; + department?: string; } export type FavActivityPostType = { From 97d998d922bb242b70bf579fb0e5a50738aef471 Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Tue, 7 Jan 2025 13:51:29 -0800 Subject: [PATCH 06/13] fix: address pr comment --- .../bc/gov/backendstartapi/dto/FavouriteActivityCreateDto.java | 2 +- backend/src/main/resources/application.properties | 2 +- .../db/migration/V47__add_col_to_favourite_activity.sql | 2 +- docker-compose.yml | 2 +- frontend/src/components/FavouriteActivities/index.tsx | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/ca/bc/gov/backendstartapi/dto/FavouriteActivityCreateDto.java b/backend/src/main/java/ca/bc/gov/backendstartapi/dto/FavouriteActivityCreateDto.java index 7d870e966..00df5d10f 100644 --- a/backend/src/main/java/ca/bc/gov/backendstartapi/dto/FavouriteActivityCreateDto.java +++ b/backend/src/main/java/ca/bc/gov/backendstartapi/dto/FavouriteActivityCreateDto.java @@ -12,5 +12,5 @@ @Schema(description = "An object representing the request body when creating a favourite activity") public record FavouriteActivityCreateDto( @NotNull String activity, - @Schema(description = "Indicates whether this activity is a Consep", defaultValue = "false") + @Schema(description = "Indicates whether this activity is from Consep", defaultValue = "false") Boolean isConsep) {} diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index 7a1295878..3838a3277 100644 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -21,7 +21,7 @@ nr-spar-team-email-address = FSA.Delivery.Team2@gov.bc.ca # Database, datasource and JPA spring.datasource.driver-class-name = org.postgresql.Driver -spring.datasource.url = jdbc:postgresql://${POSTGRES_HOST:localhost}:5432/${POSTGRES_DB:postgres} +spring.datasource.url = jdbc:postgresql://${POSTGRES_HOST:localhost}:15432/${POSTGRES_DB:postgres} spring.datasource.username = ${POSTGRES_USER:postgres} spring.datasource.password = ${POSTGRES_PASSWORD:default} spring.datasource.hikari.connectionTimeout = ${DB_POOL_CONN_TIMEOUT:90000} diff --git a/backend/src/main/resources/db/migration/V47__add_col_to_favourite_activity.sql b/backend/src/main/resources/db/migration/V47__add_col_to_favourite_activity.sql index 3a2a0c50e..9a6b8cea7 100644 --- a/backend/src/main/resources/db/migration/V47__add_col_to_favourite_activity.sql +++ b/backend/src/main/resources/db/migration/V47__add_col_to_favourite_activity.sql @@ -1,4 +1,4 @@ ALTER TABLE spar.favourite_activity ADD - COLUMN is_consep BOOLEAN DEFAULT FALSE NOT NULL; \ No newline at end of file + COLUMN is_consep BOOLEAN DEFAULT FALSE NOT NULL; diff --git a/docker-compose.yml b/docker-compose.yml index b017c8ea1..2613d53ba 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -165,4 +165,4 @@ services: ORACLE_SYNC_USER: ${ORACLE_SYNC_USER:-proxy_fsa_spar_read_only_user} depends_on: database: - condition: service_started \ No newline at end of file + condition: service_started diff --git a/frontend/src/components/FavouriteActivities/index.tsx b/frontend/src/components/FavouriteActivities/index.tsx index ff44355ab..76f1dde13 100644 --- a/frontend/src/components/FavouriteActivities/index.tsx +++ b/frontend/src/components/FavouriteActivities/index.tsx @@ -22,7 +22,7 @@ interface FavouriteActivitiesProps { isConsep: boolean; } -const FavouriteActivities: React.FC = ({ isConsep }) => { +const FavouriteActivities = ({ isConsep }: FavouriteActivitiesProps) => { const windowSize = useWindowSize(); const favActQueryKey = ['favourite-activities']; From 304c4b066b589ed61747c264975b17adfbcc1b4f Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Tue, 7 Jan 2025 13:56:02 -0800 Subject: [PATCH 07/13] fix: favourite act testing --- .../service/FavouriteActivityServiceTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/test/java/ca/bc/gov/backendstartapi/service/FavouriteActivityServiceTest.java b/backend/src/test/java/ca/bc/gov/backendstartapi/service/FavouriteActivityServiceTest.java index 8f1556c7e..175eda478 100644 --- a/backend/src/test/java/ca/bc/gov/backendstartapi/service/FavouriteActivityServiceTest.java +++ b/backend/src/test/java/ca/bc/gov/backendstartapi/service/FavouriteActivityServiceTest.java @@ -49,7 +49,7 @@ void createUserActivityTest() { entity.setHighlighted(Boolean.FALSE); when(favouriteActivityRepository.save(any())).thenReturn(entity); - FavouriteActivityCreateDto createDto = new FavouriteActivityCreateDto("CREATE_A_CLASS_SEEDLOT"); + FavouriteActivityCreateDto createDto = new FavouriteActivityCreateDto("CREATE_A_CLASS_SEEDLOT", false); FavouriteActivityEntity entitySaved = favouriteActivityService.createUserActivity(createDto); Assertions.assertNotNull(entitySaved); @@ -67,7 +67,7 @@ void createUserActivityExceptionTest() { entity.setHighlighted(Boolean.FALSE); when(favouriteActivityRepository.save(any())).thenReturn(entity); - FavouriteActivityCreateDto createDto = new FavouriteActivityCreateDto(null); + FavouriteActivityCreateDto createDto = new FavouriteActivityCreateDto(null, false); Exception notFoundExc = Assertions.assertThrows( @@ -81,7 +81,7 @@ void createUserActivityExceptionTest() { when(favouriteActivityRepository.findAllByUserId(any())).thenReturn(userFavList); FavouriteActivityCreateDto createAnotherDto = - new FavouriteActivityCreateDto("CREATE_A_CLASS_SEEDLOT"); + new FavouriteActivityCreateDto("CREATE_A_CLASS_SEEDLOT", false); Exception activityExists = Assertions.assertThrows( From 576c289019996526fa0ff55d403858f4c621878a Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Tue, 7 Jan 2025 14:02:40 -0800 Subject: [PATCH 08/13] fix: fix style --- .../backendstartapi/service/FavouriteActivityServiceTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/src/test/java/ca/bc/gov/backendstartapi/service/FavouriteActivityServiceTest.java b/backend/src/test/java/ca/bc/gov/backendstartapi/service/FavouriteActivityServiceTest.java index 175eda478..93d50e081 100644 --- a/backend/src/test/java/ca/bc/gov/backendstartapi/service/FavouriteActivityServiceTest.java +++ b/backend/src/test/java/ca/bc/gov/backendstartapi/service/FavouriteActivityServiceTest.java @@ -49,7 +49,8 @@ void createUserActivityTest() { entity.setHighlighted(Boolean.FALSE); when(favouriteActivityRepository.save(any())).thenReturn(entity); - FavouriteActivityCreateDto createDto = new FavouriteActivityCreateDto("CREATE_A_CLASS_SEEDLOT", false); + FavouriteActivityCreateDto createDto = + new FavouriteActivityCreateDto("CREATE_A_CLASS_SEEDLOT", false); FavouriteActivityEntity entitySaved = favouriteActivityService.createUserActivity(createDto); Assertions.assertNotNull(entitySaved); From b3fe62697b705bb70247e4a2d81d2235eccb56b5 Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Tue, 7 Jan 2025 14:06:56 -0800 Subject: [PATCH 09/13] fix: revert port --- backend/src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index 3838a3277..7a1295878 100644 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -21,7 +21,7 @@ nr-spar-team-email-address = FSA.Delivery.Team2@gov.bc.ca # Database, datasource and JPA spring.datasource.driver-class-name = org.postgresql.Driver -spring.datasource.url = jdbc:postgresql://${POSTGRES_HOST:localhost}:15432/${POSTGRES_DB:postgres} +spring.datasource.url = jdbc:postgresql://${POSTGRES_HOST:localhost}:5432/${POSTGRES_DB:postgres} spring.datasource.username = ${POSTGRES_USER:postgres} spring.datasource.password = ${POSTGRES_PASSWORD:default} spring.datasource.hikari.connectionTimeout = ${DB_POOL_CONN_TIMEOUT:90000} From a731ee5004deadb9a43bd15c73f4a62834e20b77 Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Mon, 13 Jan 2025 11:19:05 -0800 Subject: [PATCH 10/13] fix: update folder name --- frontend/src/routes/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/routes/index.tsx b/frontend/src/routes/index.tsx index 05f97756e..2456a719c 100644 --- a/frontend/src/routes/index.tsx +++ b/frontend/src/routes/index.tsx @@ -15,7 +15,7 @@ import SeedlotReview from '../views/Seedlot/SeedlotReview'; import SeedlotRegFormClassA from '../views/Seedlot/SeedlotRegFormClassA'; import ReviewSeedlots from '../views/Seedlot/ReviewSeedlots'; import FourOhThree from '../views/ErrorViews/FourOhThree'; -import FavouriteActivities from '../views/CONSEP/FavouriteActivity'; +import FavouriteActivities from '../views/Consep/FavouriteActivity'; const BrowserRoutes: Array = [ // Ensures that root paths get redirected to From 5b47f13904367f8b4d71599accb18f9d029ae72d Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Mon, 13 Jan 2025 11:27:45 -0800 Subject: [PATCH 11/13] fix: eslint --- frontend/src/routes/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/routes/index.tsx b/frontend/src/routes/index.tsx index 2456a719c..fce1f283c 100644 --- a/frontend/src/routes/index.tsx +++ b/frontend/src/routes/index.tsx @@ -15,7 +15,7 @@ import SeedlotReview from '../views/Seedlot/SeedlotReview'; import SeedlotRegFormClassA from '../views/Seedlot/SeedlotRegFormClassA'; import ReviewSeedlots from '../views/Seedlot/ReviewSeedlots'; import FourOhThree from '../views/ErrorViews/FourOhThree'; -import FavouriteActivities from '../views/Consep/FavouriteActivity'; +import FavouriteActivities from '../views/Consep/FavouriteActivity/index'; const BrowserRoutes: Array = [ // Ensures that root paths get redirected to From 482e9fddd65b0a1f104860e37d18e0f4c2ed7fe0 Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Mon, 13 Jan 2025 11:30:59 -0800 Subject: [PATCH 12/13] fix: eslint --- frontend/src/routes/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/routes/index.tsx b/frontend/src/routes/index.tsx index fce1f283c..2456a719c 100644 --- a/frontend/src/routes/index.tsx +++ b/frontend/src/routes/index.tsx @@ -15,7 +15,7 @@ import SeedlotReview from '../views/Seedlot/SeedlotReview'; import SeedlotRegFormClassA from '../views/Seedlot/SeedlotRegFormClassA'; import ReviewSeedlots from '../views/Seedlot/ReviewSeedlots'; import FourOhThree from '../views/ErrorViews/FourOhThree'; -import FavouriteActivities from '../views/Consep/FavouriteActivity/index'; +import FavouriteActivities from '../views/Consep/FavouriteActivity'; const BrowserRoutes: Array = [ // Ensures that root paths get redirected to From 39870e0aa348bcd0d140e5ed0405d139c16668db Mon Sep 17 00:00:00 2001 From: Xiao Peng Date: Mon, 13 Jan 2025 11:37:35 -0800 Subject: [PATCH 13/13] fix: eslint --- frontend/src/routes/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/routes/index.tsx b/frontend/src/routes/index.tsx index 2456a719c..05f97756e 100644 --- a/frontend/src/routes/index.tsx +++ b/frontend/src/routes/index.tsx @@ -15,7 +15,7 @@ import SeedlotReview from '../views/Seedlot/SeedlotReview'; import SeedlotRegFormClassA from '../views/Seedlot/SeedlotRegFormClassA'; import ReviewSeedlots from '../views/Seedlot/ReviewSeedlots'; import FourOhThree from '../views/ErrorViews/FourOhThree'; -import FavouriteActivities from '../views/Consep/FavouriteActivity'; +import FavouriteActivities from '../views/CONSEP/FavouriteActivity'; const BrowserRoutes: Array = [ // Ensures that root paths get redirected to