fix(SW-302): update handling of activity card

This commit is contained in:
Matilda Landström
2024-10-01 15:43:56 +02:00
parent c12fb9f125
commit c7146e01a7
5 changed files with 29 additions and 24 deletions

View File

@@ -1,4 +1,7 @@
import { activities } from "@/constants/routes/hotelPageParams"
import SectionContainer from "@/components/Section/Container" import SectionContainer from "@/components/Section/Container"
import { getLang } from "@/i18n/serverContext"
import CardGrid from "./CardGrid" import CardGrid from "./CardGrid"
@@ -10,6 +13,16 @@ import type {
} from "@/types/components/hotelPage/facilities" } from "@/types/components/hotelPage/facilities"
export default async function Facilities({ facilities }: FacilityProps) { export default async function Facilities({ facilities }: FacilityProps) {
const lang = getLang()
// Put activities card at the end
const activitiesIdx = facilities.findIndex(
(facility) => facility[0].id == activities[lang]
)
if (activitiesIdx != -1) {
facilities.push(facilities.splice(activitiesIdx, 1)[0])
}
return ( return (
<SectionContainer className={styles.grid}> <SectionContainer className={styles.grid}>
{facilities.map((facilityCards: FacilityCards, idx: number) => ( {facilities.map((facilityCards: FacilityCards, idx: number) => (

View File

@@ -23,7 +23,7 @@ export default function TabNavigation({ restaurantTitle }: TabNavigationProps) {
{ href: HotelHashValues.rooms, text: intl.formatMessage({ id: "Rooms" }) }, { href: HotelHashValues.rooms, text: intl.formatMessage({ id: "Rooms" }) },
{ {
href: HotelHashValues.restaurant, href: HotelHashValues.restaurant,
text: intl.formatMessage({ id: restaurantTitle }), text: intl.formatMessage({ id: restaurantTitle }, { count: 1 }),
}, },
{ {
href: HotelHashValues.meetings, href: HotelHashValues.meetings,

View File

@@ -51,11 +51,9 @@ export default async function HotelPage() {
facilityCards, facilityCards,
} = hotelData } = hotelData
const facilities = await setFacilityCards( const facilities = setFacilityCards(facilityCards, hotelDetailedFacilities)
facilityCards,
hotelDetailedFacilities activitiesCard && facilities.push(setActivityCard(activitiesCard))
)
//activitiesCard && facilities.push(setActivityCard(activitiesCard))
const topThreePois = pointsOfInterest.slice(0, 3) const topThreePois = pointsOfInterest.slice(0, 3)
const coordinates = { const coordinates = {

View File

@@ -1,11 +1,13 @@
#import "../../Fragments/PageLink/ContentPageLink.graphql"
query GetHotelPage($locale: String!, $uid: String!) { query GetHotelPage($locale: String!, $uid: String!) {
hotel_page(locale: $locale, uid: $uid) { hotel_page(locale: $locale, uid: $uid) {
hotel_page_id hotel_page_id
title title
url url
content { content {
__typename
... on HotelPageContentUpcomingActivitiesCard { ... on HotelPageContentUpcomingActivitiesCard {
__typename
upcoming_activities_card { upcoming_activities_card {
background_image background_image
cta_text cta_text
@@ -16,15 +18,8 @@ query GetHotelPage($locale: String!, $uid: String!) {
hotel_page_activities_content_pageConnection { hotel_page_activities_content_pageConnection {
edges { edges {
node { node {
... on ContentPage { __typename
url ...ContentPageLink
web {
original_url
}
system {
locale
}
}
} }
} }
} }

View File

@@ -1,4 +1,5 @@
import { import {
activities,
meetingsAndConferences, meetingsAndConferences,
restaurantAndBar, restaurantAndBar,
wellnessAndExercise, wellnessAndExercise,
@@ -24,14 +25,15 @@ type ActivityCard = {
heading: string heading: string
body_text: string body_text: string
cta_text: string cta_text: string
contentPage: Array<{ href: string }> contentPage: { href: string }
} }
export function setActivityCard(activitiesCard: ActivityCard): FacilityCards { export function setActivityCard(activitiesCard: ActivityCard): FacilityCards {
const lang = getLang()
const hasImage = activitiesCard.background_image const hasImage = activitiesCard.background_image
return [ return [
{ {
id: "activities", id: activities[lang],
theme: hasImage ? "image" : "primaryDark", theme: hasImage ? "image" : "primaryDark",
scriptedTopTitle: activitiesCard.scripted_title, scriptedTopTitle: activitiesCard.scripted_title,
heading: activitiesCard.heading, heading: activitiesCard.heading,
@@ -39,7 +41,7 @@ export function setActivityCard(activitiesCard: ActivityCard): FacilityCards {
backgroundImage: hasImage ? activitiesCard.background_image : undefined, backgroundImage: hasImage ? activitiesCard.background_image : undefined,
primaryButton: hasImage primaryButton: hasImage
? { ? {
href: activitiesCard.contentPage[0].href, href: activitiesCard.contentPage.href,
title: activitiesCard.cta_text, title: activitiesCard.cta_text,
isExternal: false, isExternal: false,
} }
@@ -47,7 +49,7 @@ export function setActivityCard(activitiesCard: ActivityCard): FacilityCards {
secondaryButton: hasImage secondaryButton: hasImage
? undefined ? undefined
: { : {
href: activitiesCard.contentPage[0].href, href: activitiesCard.contentPage.href,
title: activitiesCard.cta_text, title: activitiesCard.cta_text,
isExternal: false, isExternal: false,
}, },
@@ -75,10 +77,7 @@ async function setCardProps(
return card return card
} }
export async function setFacilityCards( export function setFacilityCards(facilities: Facility[], amenities: Amenities) {
facilities: Facility[],
amenities: Amenities
) {
const lang = getLang() const lang = getLang()
const cards: Facilities = [] const cards: Facilities = []