From 0565ad062b20f4e9c5ee9b86e6f556c08b783711 Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Sun, 29 Dec 2024 23:56:41 +0100 Subject: [PATCH] Added entity results to global search. --- components/entities/tile.vue | 25 ++++++++++++++++++++- pages/search/+Page.vue | 40 +++++++++++++++++++++++++++++++++ pages/search/+onBeforeRender.js | 8 ++++++- 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/components/entities/tile.vue b/components/entities/tile.vue index 07769c6..a2b39ba 100644 --- a/components/entities/tile.vue +++ b/components/entities/tile.vue @@ -5,12 +5,20 @@ > {{ entity.name }} + + @@ -20,6 +28,10 @@ defineProps({ type: Object, default: null, }, + showNetworkSymbol: { + type: Boolean, + default: true, + }, }); @@ -33,11 +45,22 @@ defineProps({ box-sizing: border-box; padding: 1rem; border-radius: .5rem; + position: relative; background: var(--shadow-strong-30); color: var(--text-light); font-size: 1.25rem; font-weight: bold; + .icon { + position: absolute; + top: -.25rem; + right: -.25rem; + padding: .4rem .55rem .25rem .25rem; + border-radius: .25rem; + background: var(--highlight-weak-30); + fill: var(--text-light); + } + &:hover { box-shadow: 0 0 3px var(--shadow); } diff --git a/pages/search/+Page.vue b/pages/search/+Page.vue index 16b1a87..6477d67 100644 --- a/pages/search/+Page.vue +++ b/pages/search/+Page.vue @@ -25,6 +25,30 @@ +
+ + Found {{ entities.length }} {{ entities.length > 1 ? 'channels' : 'channel' }} + + Full channel results + + +
+
+ +
+
+
+
@@ -131,6 +159,16 @@ const query = pageContext.urlParsed.search.q; flex-grow: 1; grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr)); gap: .25rem; + box-sizing: border-box; + padding: 1rem; +} + +.entities { + min-width: 15rem; + display: grid; + grid-template-columns: repeat(auto-fill, 15rem); + gap: .5rem; + box-sizing: border-box; padding: 1rem; } @@ -139,6 +177,7 @@ const query = pageContext.urlParsed.search.q; display: grid; grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr)); gap: 1rem; + box-sizing: border-box; padding: 1rem; } @@ -146,6 +185,7 @@ const query = pageContext.urlParsed.search.q; display: grid; grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr)); gap: .5rem; + box-sizing: border-box; padding: 1rem; } diff --git a/pages/search/+onBeforeRender.js b/pages/search/+onBeforeRender.js index a570d1c..e6d5479 100644 --- a/pages/search/+onBeforeRender.js +++ b/pages/search/+onBeforeRender.js @@ -1,12 +1,13 @@ import { fetchScenes } from '#/src/scenes.js'; import { fetchActors } from '#/src/actors.js'; import { fetchMovies } from '#/src/movies.js'; +import { fetchEntities } from '#/src/entities.js'; import { curateScenesQuery } from '#/src/web/scenes.js'; import { curateActorsQuery } from '#/src/web/actors.js'; import { curateMoviesQuery } from '#/src/web/movies.js'; export async function onBeforeRender(pageContext) { - const [searchScenes, searchActors, searchMovies] = await Promise.all([ + const [searchScenes, searchActors, searchMovies, entities] = await Promise.all([ fetchScenes(await curateScenesQuery({ ...pageContext.urlQuery, query: pageContext.urlParsed.search.q, @@ -28,6 +29,10 @@ export async function onBeforeRender(pageContext) { page: Number(pageContext.routeParams.page) || 1, limit: Number(pageContext.urlParsed.search.limit) || 5, }, pageContext.user), + fetchEntities({ + query: pageContext.urlParsed.search.q, + limit: 5, + }), ]); const { @@ -56,6 +61,7 @@ export async function onBeforeRender(pageContext) { actors, scenes, movies, + entities, aggYears, aggActors, aggTags,