From 7267cb88a3e7ca1356a1c0184a2b87aa3711d330 Mon Sep 17 00:00:00 2001 From: Joakim Olsson Date: Tue, 1 Aug 2023 20:21:31 +0200 Subject: [PATCH] feat: add full text search --- components/pages/events/index.vue | 77 ++++++------- components/pages/filters/index.vue | 6 +- components/pages/origins/index.vue | 6 +- graphql/generated/operations.ts | 15 ++- graphql/queries/FindEvents.graphql | 4 +- graphql/schema.graphql | 174 +++++++++++++---------------- layouts/components/themed.vue | 5 +- layouts/default.vue | 11 +- nuxt.config.js | 4 +- package.json | 6 +- plugins/pinia.ts | 10 ++ store/index.js | 9 -- store/index.ts | 49 ++++++++ translations/events.js | 8 +- utils/localStorage.js | 9 -- yarn.lock | 28 ++++- 16 files changed, 242 insertions(+), 179 deletions(-) create mode 100644 plugins/pinia.ts delete mode 100644 store/index.js create mode 100644 store/index.ts delete mode 100644 utils/localStorage.js diff --git a/components/pages/events/index.vue b/components/pages/events/index.vue index 44aed0d..9bfa781 100644 --- a/components/pages/events/index.vue +++ b/components/pages/events/index.vue @@ -43,7 +43,7 @@ @@ -52,7 +52,7 @@ + + + + + + + + import { computed, defineComponent, ref, watch } from 'vue' -import { useNuxtApp } from '@nuxt/bridge/dist/runtime' import List from './List/index.vue' import { useAuth } from '~/plugins/auth' import { useTranslation } from '~/plugins/i18n' import { FindEventsQueryVariables, - Range, useFetchAddressLazyQuery, - useFindEventsLazyQuery, + useFindEventsQuery, useSaveOriginMutation, useToggleIgnoreBandMutation, useToggleIgnoreCityMutation, @@ -95,6 +106,7 @@ import { useToggleIgnoreMunicipalityMutation, useToggleIgnoreStateMutation } from '~/graphql/generated/operations' +import { useState } from '~/store' export default defineComponent({ name: 'EventsPage', @@ -102,45 +114,26 @@ export default defineComponent({ List }, setup() { - const { $store } = useNuxtApp() + const state = useState() const { t } = useTranslation() - $store.commit('setTitle', t('app.links.events')) + state.setTitle(t('app.links.events')) const { loading: authLoading, isAuthenticated } = useAuth() - const route = useRoute() - const router = useRouter() - const validRange = (value: string | null | (string|null)[]): Range | undefined => { - if (!value) { - return Range.OneWeek - } - if (Array.isArray(value)) { - return validRange(value[0]) - } - return Object.values(Range).includes(value as Range) ? value as Range : Range.OneWeek - } - const range = computed({ - get: () => validRange(route.query.range), - set: (value) => { - router.push(`/?range=${validRange(value)}`) - } + const variables = ref({ + range: state.range, + includeOrigins: isAuthenticated.value || false, + search: state.search, + includeHidden: state.includeHidden + }) + const { result, refetch } = useFindEventsQuery(() => variables.value) + watch([state, isAuthenticated], () => { + variables.value.range = state.range + variables.value.search = state.search + variables.value.includeHidden = state.includeHidden + variables.value.includeOrigins = isAuthenticated.value || false + refetch(variables.value) }) - const variables = ref({ includeOrigins: false}) - const { result, refetch, load } = useFindEventsLazyQuery(variables) const events = computed(() => result.value?.events ?? []) const origins = computed(() => result.value?.origins ?? []) - watch( - () => route.query.range, - (r) => { - if (!authLoading.value) { - variables.value = { - range: r ? r as Range : Range.OneWeek, - includeOrigins: isAuthenticated.value || false - } - load() - refetch(variables.value) - } - }, - { immediate: true } - ) const submitting = ref(true) const ranges = [ { name: '1 vecka', value: 'ONE_WEEK' }, @@ -158,11 +151,11 @@ export default defineComponent({ originsTemp.push(origin.value) } variables.value = { - range: range.value, + ...variables.value, + range: state.range, origins: originsTemp, includeOrigins: isAuthenticated.value || false } - load() refetch(variables.value) } @@ -243,7 +236,7 @@ export default defineComponent({ return { authLoading, isAuthenticated, - range, + state, events, origins, submitting, diff --git a/components/pages/filters/index.vue b/components/pages/filters/index.vue index b98ab1d..bba378f 100644 --- a/components/pages/filters/index.vue +++ b/components/pages/filters/index.vue @@ -62,7 +62,6 @@