From 9f80e16901174bdf9d1972b58e11c22db4ca6117 Mon Sep 17 00:00:00 2001 From: Henrik Askjer <henrik.askjer@uib.no> Date: Tue, 30 Nov 2021 10:28:46 +0100 Subject: [PATCH] keyword parameters --- src/components/DictionaryView.vue | 48 ++++++++++++++++++++++--------- src/main.js | 5 ++++ 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/src/components/DictionaryView.vue b/src/components/DictionaryView.vue index 1b0521e5..29ccb226 100644 --- a/src/components/DictionaryView.vue +++ b/src/components/DictionaryView.vue @@ -221,9 +221,9 @@ export default { }, select_result: function (event) { this.event = event - let name = event.search ? 'search' : 'w' - let route = `/${this.lang}/${name}/${event.match || event.q}${this.pos_param()}` - this.$router.push(route) + let path = `/${this.lang}/search` + let query = {q: event.match || event.q, pos: this.pos_param(), scope: this.scope} + this.$router.push({path, query}) navigate_to_query(this) // Tracking @@ -234,14 +234,19 @@ export default { }) }, pos_param: function() { - if (this.pos_selected) return '/'+this.pos_selected - return '' + if (this.pos_selected) return this.pos_selected.toLowerCase() }, update_lang_form: function (lang) { this.lang = lang - let name = null - let query = null - if(this.$route.name == 'word') { + let name + let query + if (this.$route.name == 'query') { + let path = this.lang + "/search" + query = {q: this.$route.query.q, pos: this.pos_param(), scope: this.scope} + this.$router.push(path, query) + navigate_to_query(this, query.q) + } + else if(this.$route.name == 'word') { name = "w" query = this.$route.params.word this.$router.push(`/${this.lang}/${name}/${query+this.pos_param()}`) @@ -258,7 +263,14 @@ export default { this.pos_selected = pos let name = null let query = null - if(this.$route.name == 'word') { + if(this.$route.name == 'query') { + let path = `/${this.lang}/search` + query = {q: this.$route.query.q, pos: this.pos_param(), scope: this.scope} + this.$router.push({path, query}) + navigate_to_query(this, query.q) + + } + else if(this.$route.name == 'word') { name = "w" query = this.$route.params.word this.$router.push(`/${this.lang}/${name}/${query+this.pos_param()}`) @@ -308,16 +320,26 @@ export default { }) ]).then(function(_) { self.waiting_for_metadata = false - if (self.$route.params.pos) { - console.log("pos", self.$route.params.pos ) - self.pos_selected = self.$route.params.pos + + if (self.$route.name == 'query') { + self.lang = self.$route.params.lang + if (self.$route.query.pos) { + self.pos_selected = self.$route.query.pos.toUpperCase() + } + navigate_to_query(self, self.$route.query.q) } - if(self.$route.name == 'search') { + else if(self.$route.name == 'search') { self.lang = self.$route.params.lang + if (self.$route.params.pos ) { + self.pos_selected = self.$route.params.pos + } navigate_to_query(self, self.$route.params.query) } else if(self.$route.name == 'word') { self.lang = self.$route.params.lang + if (self.$route.params.pos ) { + self.pos_selected = self.$route.params.pos + } navigate_to_query(self, self.$route.params.word) } else if(self.$route.name == 'lookup'){ diff --git a/src/main.js b/src/main.js index 5171cf54..17020d9b 100644 --- a/src/main.js +++ b/src/main.js @@ -84,6 +84,11 @@ const router = new VueRouter({ { path: ':lang(bm|nn|bm,nn)', children: [ + { + path: 'search', + name: 'query', + params: {q: '', pos: 'all', scope: 'w'} + }, { name: 'word', path: 'w/:word/:pos?' -- GitLab