From 7cd7b00993249533d73d23bb0d0854252fd36a9b Mon Sep 17 00:00:00 2001 From: Henrik Askjer <henrik.askjer@uib.no> Date: Wed, 29 Sep 2021 10:41:09 +0200 Subject: [PATCH] Disable full-text search and reintroduce word router name --- src/components/Autocomplete.vue | 28 +++++++++++++++++----------- src/components/DictionaryView.vue | 31 +++++++++++++++++++++++-------- 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/components/Autocomplete.vue b/src/components/Autocomplete.vue index d8029804..0f7eadc5 100644 --- a/src/components/Autocomplete.vue +++ b/src/components/Autocomplete.vue @@ -29,7 +29,7 @@ <span class="search-hit"> {{data.item.label}} </span> - ({{data.item.lang? data.item.lang[1] ? "bm, nn" : {"bob": "bm", "nob": "nn"}[data.item.lang[0]] : ["fulltekst","fritekst","avansert søk"][data.item.mode]}}) + ({{data.item.lang? data.item.lang[1] ? "bm, nn" : {"bob": "bm", "nob": "nn"}[data.item.lang[0]] : ["fulltekst","fritekst","avansert søk"][data.item.search]}}) </template> <template slot="no-data"> <div></div> @@ -80,33 +80,39 @@ if (this.items[0]) { if (this.items[0].time < time) { if (/_|\*|\|/.test(q)) { - this.items.splice(0,1, {q: q, label: q, time: time, mode: 2}) - } else { - this.items.splice(0,1, {q: q+"*", label: q, time: time, mode: 1}) + this.items.splice(0,1, {q: q, label: q, time: time, search: 2}) } + else { + this.items.splice(0,1, {q: q+"*", label: q, time: time, search: 1}) + } + } } else { - this.items.splice(0,1, {q: q+"*", label: q, time: time, mode: 1}) + this.items.splice(0,1, {q: q+"*", label: q, time: time, search: 1}) } let self = this - self.api.get('suggest?', {params: {q: q, dict: self.$parent.lang, n: 80, scope: 'nf'}}) + self.api.get('suggest?', {params: {q: q, dict: self.$parent.lang, n: 80, scope: 'n'}}) .then(async (response) => { if (self.$refs.autocomplete.searchInput == q & self.suggesting) { - let word_matches = response.data.a.n.map(item => ({q: q, match: item[0], label: item[0], time: time, lang: item[1]})) - let text_matches = response.data.a.f.map(item => ({q: q, match: item[0], label: item[0], time: time, mode: 0})) + let suggestions = response.data.a.n.map(item => ({q: q, match: item[0], label: item[0], time: time, lang: item[1]})) + /* + //let text_matches = response.data.a.f.map(item => ({q: q, match: item[0], label: item[0], time: time, search: 0})) let suggestions = [] if( q.charAt(q.length-1) === '!') suggestions = text_matches.concat(word_matches) else suggestions = word_matches.concat(text_matches) + */ if (/_|\*|\|/.test(q)) { - suggestions.unshift({q: q, label: q, time: time, mode: 2}) - } else { - suggestions.push({q: q+"*", label: q + ' ', time: time, mode: 1}) + suggestions.unshift({q: q, label: q, time: time, search: 2}) } + else { + suggestions.push({q: q+"*", label: q + ' ', time: time, search: 1}) + } + // whitespace necessary because duplicates aren't allowed in the dropdown self.items = suggestions diff --git a/src/components/DictionaryView.vue b/src/components/DictionaryView.vue index c04a476c..22eb0003 100644 --- a/src/components/DictionaryView.vue +++ b/src/components/DictionaryView.vue @@ -152,12 +152,11 @@ function navigate_to_search(self, query) { } */ - -function navigate_to_word(self, word) { +function navigate_to_query(self, word) { let query = self.event ? self.event : {q: word} // Get article IDs - oda_api.get('articles?', {params: {lord: query.match || query.q, dict: self.lang}}).then((response) => { + oda_api.get('articles?', {params: {w: query.match || query.q, dict: self.lang, scope: "n"}}).then((response) => { let article_ids = response.data let unwrapped = [] for (const d in article_ids) { @@ -246,9 +245,10 @@ export default { methods: { select_result: function (event) { this.event = event - let route = `/${this.lang}/search/${event.match || event.q}` + let name = event.search ? 'search' : 'w' + let route = `/${this.lang}/${name}/${event.match || event.q}` this.$router.push(route) - navigate_to_word(this) + navigate_to_query(this) // Tracking let props = {query: event.q} @@ -259,9 +259,20 @@ export default { }, update_lang_form: function (lang) { this.lang = lang - let route = `/${this.lang}/search/${this.$route.params.query}` + let name = "" + let query = "" + if(this.$route.name == 'word') { + name = "w" + query = this.$route.params.word + } + else if (this.$route.name == 'search') { + name = "search" + query = this.$route.params.query + } + let route = `/${this.lang}/${name}/${query}` + navigate_to_query(this, query) this.$router.push(route) - navigate_to_word(this, this.$route.params.query) + }, article_link_click: function(item) { if (this.article && this.article.article_id == item.article_id){ @@ -299,7 +310,11 @@ export default { self.waiting_for_metadata = false if(self.$route.name == 'search') { self.lang = self.$route.params.lang - navigate_to_word(self, self.$route.params.query) + navigate_to_query(self, self.$route.params.query) + } + else if(self.$route.name == 'word') { + self.lang = self.$route.params.lang + navigate_to_query(self, self.$route.params.word) } else if(self.$route.name == 'lookup'){ navigate_to_article(self, self.$route.path) -- GitLab