Merged in fix/adjust-datalayer (pull request #62)
Fix/adjust datalayer Approved-by: Michael Zetterberg
This commit is contained in:
@@ -2,6 +2,7 @@ import { notFound } from "next/navigation"
|
|||||||
|
|
||||||
import { request } from "@/lib/request"
|
import { request } from "@/lib/request"
|
||||||
import { GetCurrentBlockPage } from "@/lib/graphql/Query/CurrentBlockPage.graphql"
|
import { GetCurrentBlockPage } from "@/lib/graphql/Query/CurrentBlockPage.graphql"
|
||||||
|
import { GetCurrentBlockPageTrackingData } from "@/lib/graphql/Query/CurrentBlockPageTrackingData.graphql"
|
||||||
|
|
||||||
import ContentPage from "@/components/Current/ContentPage"
|
import ContentPage from "@/components/Current/ContentPage"
|
||||||
import Header from "@/components/Current/Header"
|
import Header from "@/components/Current/Header"
|
||||||
@@ -9,6 +10,7 @@ import Tracking from "@/components/Current/Tracking"
|
|||||||
|
|
||||||
import type { PageArgs, LangParams, UriParams } from "@/types/params"
|
import type { PageArgs, LangParams, UriParams } from "@/types/params"
|
||||||
import type { GetCurrentBlockPageData } from "@/types/requests/currentBlockPage"
|
import type { GetCurrentBlockPageData } from "@/types/requests/currentBlockPage"
|
||||||
|
import { TrackingData } from "@/types/requests/trackingData"
|
||||||
|
|
||||||
export default async function CurrentContentPage({
|
export default async function CurrentContentPage({
|
||||||
params,
|
params,
|
||||||
@@ -26,7 +28,7 @@ export default async function CurrentContentPage({
|
|||||||
url: searchParams.uri,
|
url: searchParams.uri,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
tags: [`${searchParams.uri}-${params.lang}`]
|
tags: [`${searchParams.uri}-${params.lang}`],
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -36,11 +38,24 @@ export default async function CurrentContentPage({
|
|||||||
console.log("SearchParams URI: ", searchParams.uri)
|
console.log("SearchParams URI: ", searchParams.uri)
|
||||||
throw new Error("Not found")
|
throw new Error("Not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is currently to be considered a temporary solution to provide the tracking with a few values in english to align with existing reports
|
||||||
|
const pageDataForTracking = await request<TrackingData>(
|
||||||
|
GetCurrentBlockPageTrackingData,
|
||||||
|
{ uid: response.data.all_current_blocks_page.items[0].system.uid },
|
||||||
|
{
|
||||||
|
tags: [`${searchParams.uri}-en`],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
const pageData = response.data.all_current_blocks_page.items[0]
|
const pageData = response.data.all_current_blocks_page.items[0]
|
||||||
|
|
||||||
const trackingData = {
|
const trackingData = {
|
||||||
|
lang: params.lang,
|
||||||
publishedDate: pageData.system.updated_at,
|
publishedDate: pageData.system.updated_at,
|
||||||
createdDate: pageData.system.created_at,
|
createdDate: pageData.system.created_at,
|
||||||
pageId: pageData.system.uid,
|
pageId: pageData.system.uid,
|
||||||
|
englishUrl: pageDataForTracking.data?.current_blocks_page.url,
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -9,9 +9,13 @@ import { usePathname, useSearchParams } from "next/navigation"
|
|||||||
import { useEffect, useState } from "react"
|
import { useEffect, useState } from "react"
|
||||||
|
|
||||||
function createPageObject(trackingData: TrackingData) {
|
function createPageObject(trackingData: TrackingData) {
|
||||||
|
const englishSegments = trackingData.englishUrl
|
||||||
|
? trackingData.englishUrl.split("/").filter((seg?: string) => seg)
|
||||||
|
: null
|
||||||
|
|
||||||
const [lang, ...segments] = trackingData.pathName
|
const [lang, ...segments] = trackingData.pathName
|
||||||
.split("/")
|
.split("/")
|
||||||
.filter((v: string) => v)
|
.filter((seg: string) => seg)
|
||||||
|
|
||||||
function getSiteSections(segments: string[]): SiteSectionObject {
|
function getSiteSections(segments: string[]): SiteSectionObject {
|
||||||
/*
|
/*
|
||||||
@@ -39,10 +43,12 @@ function createPageObject(trackingData: TrackingData) {
|
|||||||
}
|
}
|
||||||
return sitesections
|
return sitesections
|
||||||
}
|
}
|
||||||
const sitesections = getSiteSections(segments)
|
const sitesections = englishSegments
|
||||||
|
? getSiteSections(englishSegments)
|
||||||
|
: getSiteSections(segments)
|
||||||
const { host: domain, href: fullurl, origin } = window.location
|
const { host: domain, href: fullurl, origin } = window.location
|
||||||
const page_obj = {
|
const page_obj = {
|
||||||
pagename: segments.join("|"),
|
pagename: englishSegments ? englishSegments.join("|") : segments.join("|"),
|
||||||
pagetype: "contentpage",
|
pagetype: "contentpage",
|
||||||
pageurl: origin + trackingData.pathName,
|
pageurl: origin + trackingData.pathName,
|
||||||
fullurl,
|
fullurl,
|
||||||
@@ -53,7 +59,7 @@ function createPageObject(trackingData: TrackingData) {
|
|||||||
querystring: trackingData.queryString || "",
|
querystring: trackingData.queryString || "",
|
||||||
pageid: trackingData.pageId,
|
pageid: trackingData.pageId,
|
||||||
// sessionid: "<unique identifier of session>", // base on what?
|
// sessionid: "<unique identifier of session>", // base on what?
|
||||||
domainlanguage: lang,
|
domainlanguage: trackingData.lang ? trackingData.lang : lang,
|
||||||
hotelbrand: "scandic",
|
hotelbrand: "scandic",
|
||||||
siteversion: "new-web",
|
siteversion: "new-web",
|
||||||
...sitesections,
|
...sitesections,
|
||||||
|
|||||||
5
lib/graphql/Query/CurrentBlockPageTrackingData.graphql
Normal file
5
lib/graphql/Query/CurrentBlockPageTrackingData.graphql
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
query GetCurrentBlockPageTrackingData($uid: String!) {
|
||||||
|
current_blocks_page(uid: $uid, locale: "en") {
|
||||||
|
url
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,12 +1,18 @@
|
|||||||
|
import { Lang } from "../lang"
|
||||||
|
|
||||||
export type TrackingProps = {
|
export type TrackingProps = {
|
||||||
pageData: {
|
pageData: {
|
||||||
pageId: string
|
pageId: string
|
||||||
createdDate: string
|
createdDate: string
|
||||||
publishedDate: string
|
publishedDate: string
|
||||||
|
englishUrl?: string
|
||||||
|
lang: Lang
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TrackingData = {
|
export type TrackingData = {
|
||||||
|
lang: Lang
|
||||||
|
englishUrl?: string
|
||||||
pathName: string
|
pathName: string
|
||||||
queryString: string
|
queryString: string
|
||||||
pageId: string
|
pageId: string
|
||||||
|
|||||||
3
types/requests/trackingData.ts
Normal file
3
types/requests/trackingData.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
export type TrackingData = {
|
||||||
|
current_blocks_page: { url: string; title: string }
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user