From 22c93cd38b34c35d7b861c19f15c443d7d649f5f Mon Sep 17 00:00:00 2001 From: jendiamond Date: Wed, 15 Jan 2025 00:14:22 -0800 Subject: [PATCH 1/4] combine current and ongoing series --- composables/useEventSeriesListSearchFilter.js | 72 +++++++++++- pages/series/index.vue | 105 ++++++++++++++++-- 2 files changed, 165 insertions(+), 12 deletions(-) diff --git a/composables/useEventSeriesListSearchFilter.js b/composables/useEventSeriesListSearchFilter.js index 5c784ed5..3cccd32b 100644 --- a/composables/useEventSeriesListSearchFilter.js +++ b/composables/useEventSeriesListSearchFilter.js @@ -1,7 +1,7 @@ // TODO Convert this composable into TypeScript export default function useEventSeriesListSearchFilter() { - return { pastEventSeriesQuery, currentEventSeriesQuery } + return { pastEventSeriesQuery, currentEventSeriesQueryCurrent, currentEventSeriesQueryOngoing } } async function pastEventSeriesQuery( @@ -58,7 +58,7 @@ async function pastEventSeriesQuery( return data } -async function currentEventSeriesQuery( +async function currentEventSeriesQueryCurrent( currentPage = 1, documentsPerPage = 10, sort, @@ -97,7 +97,7 @@ async function currentEventSeriesQuery( should: [ { term: { - ongoing: true, + ongoing: false, }, }, { @@ -108,7 +108,59 @@ async function currentEventSeriesQuery( }, }, ], - minimum_should_match: 1, + minimum_should_match: 2, + } + }, + ...parseSort(sort, orderBy), + }), + } + ) + + const data = await response.json() + return data +} + +async function currentEventSeriesQueryOngoing( + currentPage = 1, + documentsPerPage = 10, + sort, + orderBy, + source = ['*'], +) { + const config = useRuntimeConfig() + if ( + config.public.esReadKey === '' || + config.public.esURL === '' || + config.public.esAlias === '' + ) + return + + const response = await fetch( + `${config.public.esURL}/${config.public.esAlias}/_search`, + { + headers: { + Authorization: `ApiKey ${config.public.esReadKey}`, + 'Content-Type': 'application/json', + }, + method: 'POST', + body: JSON.stringify({ + from: (currentPage - 1) * documentsPerPage, + size: documentsPerPage, + _source: [...source], + query: { + bool: { + filter: [ + { + term: { + 'sectionHandle.keyword': 'ftvaEventSeries', + }, + }, + { + term: { + ongoing: true, + }, + } + ] } }, ...parseSort(sort, orderBy), @@ -131,3 +183,15 @@ function parseSort(sortField, orderBy = 'asc') { return parseQuery } + +function parseSort2(sortField, orderBy = 'asc') { + if (!sortField || sortField === '') return {} + const parseQuery = {} + parseQuery.sort = [] + parseQuery.sort[0] = {} + parseQuery.sort[0][sortField] = { + order: orderBy + } + + return parseQuery +} diff --git a/pages/series/index.vue b/pages/series/index.vue index 78d9d4bd..771bb35a 100644 --- a/pages/series/index.vue +++ b/pages/series/index.vue @@ -132,22 +132,111 @@ const parsedEventSeries = computed(() => { }) // ES FUNCTION +// async function searchES() { +// if (isLoading.value || !hasMore.value) return + +// isLoading.value = true +// // COMPOSABLE +// const { currentEventSeriesQueryCurrent, currentEventSeriesQueryOngoing, pastEventSeriesQuery } = useEventSeriesListSearchFilter() + +// try { +// let results + +// if (currentView.value === 'current') { +// // const currentSeries = results.hits.hits || [] + +// const currentSeries = await currentEventSeriesQueryCurrent(currentPage.value, +// documentsPerPage, +// 'startDate', +// 'asc', +// ['*'],) + +// const ongoingSeries = await currentEventSeriesQueryOngoing(currentPage.value, +// documentsPerPage, +// 'startDate', +// 'asc', +// ['*'],) + + + +// // results = await currentEventSeriesQueryCurrent(currentPage.value, +// // documentsPerPage, +// // 'startDate', +// // 'asc', +// // ['*'],) +// // results = ongoingSeries; + +// //const eventSeries = currentSeries.concat(ongoingSeries); +// //const eventSeries = await [...currentSeries, ...ongoingSeries] +// results = ongoingSeries; +// } else { +// results = await pastEventSeriesQuery(currentPage.value, +// documentsPerPage, +// 'startDate', +// 'desc', +// ['*']) +// } + +// if (results?.hits?.hits?.length > 0) { +// const newSeries = results.hits.hits || [] +// if (isMobile.value) { +// mobileSeries.value.push(...newSeries) +// hasMore.value = currentPage.value < Math.ceil(results.hits.total.value / documentsPerPage) +// } else { +// desktopSeries.value = newSeries +// totalPages.value = Math.ceil(results.hits.total.value / documentsPerPage) +// } +// noResultsFound.value = false +// } else { +// noResultsFound.value = true +// if (!isMobile.value) totalPages.value = 0 +// hasMore.value = false +// } +// } catch (err) { +// noResultsFound.value = true +// } finally { +// isLoading.value = false +// } +// } + async function searchES() { if (isLoading.value || !hasMore.value) return isLoading.value = true // COMPOSABLE - const { currentEventSeriesQuery, pastEventSeriesQuery } = useEventSeriesListSearchFilter() + const { currentEventSeriesQueryCurrent, currentEventSeriesQueryOngoing, pastEventSeriesQuery } = useEventSeriesListSearchFilter() try { let results if (currentView.value === 'current') { - results = await currentEventSeriesQuery(currentPage.value, - documentsPerPage, - 'startDate', - 'asc', - ['*'],) + const [currentSeriesResult, ongoingSeriesResult] = await Promise.all([ + currentEventSeriesQueryCurrent( + currentPage.value, + documentsPerPage, + 'startDate', + 'asc', + ['*'] + ), + currentEventSeriesQueryOngoing( + currentPage.value, + documentsPerPage, + 'startDate', + 'asc', + ['*'] + ) + ]) + + // Combine results with current series first, ongoing series last + const currentSeries = currentSeriesResult?.hits?.hits || []; + const ongoingSeries = ongoingSeriesResult?.hits?.hits || []; + results = { + hits: { + hits: [...currentSeries, ...ongoingSeries], + total: { value: currentSeries.length + ongoingSeries.length }, + }, + }; + } else { results = await pastEventSeriesQuery(currentPage.value, documentsPerPage, @@ -220,7 +309,7 @@ watch( Date: Wed, 15 Jan 2025 00:18:41 -0800 Subject: [PATCH 2/4] delete extraneaous code --- composables/useEventSeriesListSearchFilter.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/composables/useEventSeriesListSearchFilter.js b/composables/useEventSeriesListSearchFilter.js index 3cccd32b..92d6e0b2 100644 --- a/composables/useEventSeriesListSearchFilter.js +++ b/composables/useEventSeriesListSearchFilter.js @@ -183,15 +183,3 @@ function parseSort(sortField, orderBy = 'asc') { return parseQuery } - -function parseSort2(sortField, orderBy = 'asc') { - if (!sortField || sortField === '') return {} - const parseQuery = {} - parseQuery.sort = [] - parseQuery.sort[0] = {} - parseQuery.sort[0][sortField] = { - order: orderBy - } - - return parseQuery -} From c05757d52accea983f8486108552b6c5a67a16c8 Mon Sep 17 00:00:00 2001 From: jendiamond Date: Wed, 15 Jan 2025 00:19:43 -0800 Subject: [PATCH 3/4] delete extraneaous code --- pages/series/index.vue | 67 ------------------------------------------ 1 file changed, 67 deletions(-) diff --git a/pages/series/index.vue b/pages/series/index.vue index 771bb35a..52fd7787 100644 --- a/pages/series/index.vue +++ b/pages/series/index.vue @@ -132,73 +132,6 @@ const parsedEventSeries = computed(() => { }) // ES FUNCTION -// async function searchES() { -// if (isLoading.value || !hasMore.value) return - -// isLoading.value = true -// // COMPOSABLE -// const { currentEventSeriesQueryCurrent, currentEventSeriesQueryOngoing, pastEventSeriesQuery } = useEventSeriesListSearchFilter() - -// try { -// let results - -// if (currentView.value === 'current') { -// // const currentSeries = results.hits.hits || [] - -// const currentSeries = await currentEventSeriesQueryCurrent(currentPage.value, -// documentsPerPage, -// 'startDate', -// 'asc', -// ['*'],) - -// const ongoingSeries = await currentEventSeriesQueryOngoing(currentPage.value, -// documentsPerPage, -// 'startDate', -// 'asc', -// ['*'],) - - - -// // results = await currentEventSeriesQueryCurrent(currentPage.value, -// // documentsPerPage, -// // 'startDate', -// // 'asc', -// // ['*'],) -// // results = ongoingSeries; - -// //const eventSeries = currentSeries.concat(ongoingSeries); -// //const eventSeries = await [...currentSeries, ...ongoingSeries] -// results = ongoingSeries; -// } else { -// results = await pastEventSeriesQuery(currentPage.value, -// documentsPerPage, -// 'startDate', -// 'desc', -// ['*']) -// } - -// if (results?.hits?.hits?.length > 0) { -// const newSeries = results.hits.hits || [] -// if (isMobile.value) { -// mobileSeries.value.push(...newSeries) -// hasMore.value = currentPage.value < Math.ceil(results.hits.total.value / documentsPerPage) -// } else { -// desktopSeries.value = newSeries -// totalPages.value = Math.ceil(results.hits.total.value / documentsPerPage) -// } -// noResultsFound.value = false -// } else { -// noResultsFound.value = true -// if (!isMobile.value) totalPages.value = 0 -// hasMore.value = false -// } -// } catch (err) { -// noResultsFound.value = true -// } finally { -// isLoading.value = false -// } -// } - async function searchES() { if (isLoading.value || !hasMore.value) return From bcd22f1ae4feb5710259347480a126a5def2ee87 Mon Sep 17 00:00:00 2001 From: jendiamond Date: Wed, 15 Jan 2025 00:21:50 -0800 Subject: [PATCH 4/4] linting --- pages/series/index.vue | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pages/series/index.vue b/pages/series/index.vue index 52fd7787..f5b6f928 100644 --- a/pages/series/index.vue +++ b/pages/series/index.vue @@ -161,15 +161,14 @@ async function searchES() { ]) // Combine results with current series first, ongoing series last - const currentSeries = currentSeriesResult?.hits?.hits || []; - const ongoingSeries = ongoingSeriesResult?.hits?.hits || []; + const currentSeries = currentSeriesResult?.hits?.hits || [] + const ongoingSeries = ongoingSeriesResult?.hits?.hits || [] results = { hits: { hits: [...currentSeries, ...ongoingSeries], total: { value: currentSeries.length + ongoingSeries.length }, }, - }; - + } } else { results = await pastEventSeriesQuery(currentPage.value, documentsPerPage, @@ -242,7 +241,7 @@ watch(