From 051234f9489765b38cee7712a5a8fda44f36483d Mon Sep 17 00:00:00 2001 From: David Featherston Date: Wed, 12 Jul 2023 14:16:24 +1000 Subject: [PATCH 1/3] fix(@dpc-sdp/ripple-tide-landing-page): include siteId in search filters, fix filter type --- .../global/TideLandingPage/ContentCollection.vue | 11 ++++++++++- .../content-collection-mapping.test.ts | 2 +- .../content-collection-mapping.ts | 16 +++++----------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/packages/ripple-tide-landing-page/components/global/TideLandingPage/ContentCollection.vue b/packages/ripple-tide-landing-page/components/global/TideLandingPage/ContentCollection.vue index 809fa859d2..6591d702a7 100644 --- a/packages/ripple-tide-landing-page/components/global/TideLandingPage/ContentCollection.vue +++ b/packages/ripple-tide-landing-page/components/global/TideLandingPage/ContentCollection.vue @@ -112,6 +112,15 @@ const searchResultsMappingFn = (item): any => { } } +const searchFilters = computed(() => { + if (!config.tide?.site) return props.filters + + return [ + ...props.filters, + { type: 'any', field: 'field_node_site', values: [config.tide.site] } + ] +}) + const searchDriverOptions = { trackUrlState: false, alwaysSearchOnInitialLoad: true, @@ -120,7 +129,7 @@ const searchDriverOptions = { sortList: props.sortBy }, searchQuery: { - filters: props.filters, + filters: searchFilters.value, result_fields: { title: { raw: { diff --git a/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.test.ts b/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.test.ts index 11311d2675..daeb28b10c 100644 --- a/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.test.ts +++ b/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.test.ts @@ -25,7 +25,7 @@ describe('contentCollectionMapping', () => { values: ['landing_page', 'news'] }, { - type: 'all', + type: 'any', field: 'field_topic', values: [8941, 8940] } diff --git a/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.ts b/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.ts index 71f437e8f7..d354deb14d 100644 --- a/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.ts +++ b/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.ts @@ -61,17 +61,11 @@ const getContentCollectionFiltersFromConfig = ( } if (config.internal?.contentFields) { const contentFieldFilters = Object.keys(config.internal?.contentFields).map( - (field) => { - const type = - config.internal?.contentFields[field].operator === 'OR' - ? 'any' - : 'all' - return { - type, - field, - values: config.internal?.contentFields[field].values - } - } + (field) => ({ + field, + type: 'any', + values: config.internal?.contentFields[field].values + }) ) filters.push(...contentFieldFilters) } From 5433389f32f1ebca35beae928b97c4d83d8e10c9 Mon Sep 17 00:00:00 2001 From: David Featherston Date: Thu, 13 Jul 2023 15:42:34 +1000 Subject: [PATCH 2/3] fix(@dpc-sdp/ripple-tide-landing-page): use siteID from TidePageApi --- .../ripple-tide-api/src/services/tide-page.ts | 2 +- .../TideLandingPage/ContentCollection.vue | 11 +---------- .../content-collection-mapping.ts | 19 ++++++++++++++++--- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/packages/ripple-tide-api/src/services/tide-page.ts b/packages/ripple-tide-api/src/services/tide-page.ts index 3f41a95ddc..0d36d86424 100644 --- a/packages/ripple-tide-api/src/services/tide-page.ts +++ b/packages/ripple-tide-api/src/services/tide-page.ts @@ -72,7 +72,7 @@ export default class TidePageApi extends TideApiBase { ...data }) } else if (typeof componentMapping === 'function') { - const data = componentMapping.apply(this, [cmpData, pageData]) + const data = componentMapping.apply(this, [cmpData, pageData, this]) mappedComponents.push({ uuid: cmpData.uuid || cmpData.id, ...data diff --git a/packages/ripple-tide-landing-page/components/global/TideLandingPage/ContentCollection.vue b/packages/ripple-tide-landing-page/components/global/TideLandingPage/ContentCollection.vue index 6591d702a7..809fa859d2 100644 --- a/packages/ripple-tide-landing-page/components/global/TideLandingPage/ContentCollection.vue +++ b/packages/ripple-tide-landing-page/components/global/TideLandingPage/ContentCollection.vue @@ -112,15 +112,6 @@ const searchResultsMappingFn = (item): any => { } } -const searchFilters = computed(() => { - if (!config.tide?.site) return props.filters - - return [ - ...props.filters, - { type: 'any', field: 'field_node_site', values: [config.tide.site] } - ] -}) - const searchDriverOptions = { trackUrlState: false, alwaysSearchOnInitialLoad: true, @@ -129,7 +120,7 @@ const searchDriverOptions = { sortList: props.sortBy }, searchQuery: { - filters: searchFilters.value, + filters: props.filters, result_fields: { title: { raw: { diff --git a/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.ts b/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.ts index d354deb14d..6292b9e1c4 100644 --- a/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.ts +++ b/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.ts @@ -49,7 +49,8 @@ export interface ITideContentCollectionConfig { } const getContentCollectionFiltersFromConfig = ( - config: ITideContentCollectionConfig + config: ITideContentCollectionConfig, + siteId?: string ): IContentCollectionFilter[] => { const filters = [] if (config.internal?.contentTypes) { @@ -69,6 +70,15 @@ const getContentCollectionFiltersFromConfig = ( ) filters.push(...contentFieldFilters) } + + if (siteId) { + filters.push({ + type: 'any', + field: 'field_node_site', + values: [siteId] + }) + } + return filters } @@ -91,7 +101,9 @@ const getContentCollectionSortBy = (config) => { } export const contentCollectionMapping = ( - field + field, + pageData, + TidePageApi ): TideDynamicPageComponent => { return { component: 'TideLandingPageContentCollection', @@ -104,7 +116,8 @@ export const contentCollectionMapping = ( 'callToAction' ]), filters: getContentCollectionFiltersFromConfig( - field.field_content_collection_config + field.field_content_collection_config, + TidePageApi?.site ), sortBy: getContentCollectionSortBy(field.field_content_collection_config), perPage: getField( From 20629081121d7dbdaaf77edf9b2366bbc4f451e2 Mon Sep 17 00:00:00 2001 From: David Featherston Date: Fri, 14 Jul 2023 09:33:22 +1000 Subject: [PATCH 3/3] fix(@dpc-sdp/ripple-tide-landing-page): update collection test --- .../content-collection-mapping.test.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.test.ts b/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.test.ts index daeb28b10c..86417ba8c9 100644 --- a/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.test.ts +++ b/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.test.ts @@ -28,6 +28,11 @@ describe('contentCollectionMapping', () => { type: 'any', field: 'field_topic', values: [8941, 8940] + }, + { + type: 'any', + field: 'field_node_site', + values: ['8888'] } ], sortBy: [ @@ -48,6 +53,8 @@ describe('contentCollectionMapping', () => { } } - expect(contentCollectionMapping(rawData)).toEqual(result) + expect(contentCollectionMapping(rawData, {}, { site: '8888' })).toEqual( + result + ) }) })