From f385e69004cc8e748921e50f90c5c06f4dfb3c60 Mon Sep 17 00:00:00 2001
From: Henrik Askjer <henrik.askjer@uib.no>
Date: Fri, 14 Jan 2022 11:46:54 +0100
Subject: [PATCH] suggest dicts and fulltext if they give results

---
 src/components/DictionaryView.vue | 51 +++++++++++++++++++++++++------
 1 file changed, 42 insertions(+), 9 deletions(-)

diff --git a/src/components/DictionaryView.vue b/src/components/DictionaryView.vue
index e15538f4..829aff6e 100644
--- a/src/components/DictionaryView.vue
+++ b/src/components/DictionaryView.vue
@@ -83,12 +83,12 @@
                            @click.native="suggestion_link(item[0])">{{item[0]}}</router-link><!--
               -->{{index == inflection_suggestions.length-1? '.' : ', '}}</span>
             <p class="below-notification"
-               v-if="lang=='bm'">{{$t('notifications.suggest_dict[0]')}}<br>{{$t('notifications.suggest_dict[1]')}}
+               v-if="lang=='bm' && suggest_other_dict">{{$t('notifications.suggest_dict[1]')}}
               <router-link :to="generate_path($route.query.q, {lang: 'nn'})"
                            @click.native="language_link('nn')">{{$t('dicts.nn')}}</router-link>
             </p>
             <p class="below-notification"
-               v-if="lang=='nn'">{{$t('notifications.suggest_dict[0]')}}<br>{{$t('notifications.suggest_dict[1]')}}
+               v-if="lang=='nn' && suggest_other_dict">{{$t('notifications.suggest_dict[0]')}}<br>{{$t('notifications.suggest_dict[1]')}}
               <router-link :to="generate_path($route.query.q, {lang: 'nn'})"
                            @click.native="language_link('bm')">{{$t('dicts_inline.bm')}}</router-link>
             </p>
@@ -259,6 +259,11 @@ function navigate_to_query(self, word, keep_page) {
   self.error = null
   self.no_results = null
   self.waiting_for_articles = true
+  self.inflection_suggestions = []
+  self.similar = []
+  self.suggest_fulltext = false
+  self.suggest_other_dict = false
+
   if (!self.event) {
     self.event = {match: word}
   }
@@ -281,8 +286,6 @@ function navigate_to_query(self, word, keep_page) {
                     self.handle_error(error)
                     self.replace_history()         
                 })
-    } else {
-      self.inflection_suggestions = []
     }
 
   // Get article IDs
@@ -300,11 +303,12 @@ function navigate_to_query(self, word, keep_page) {
             let bm_length = response.data.articles.bm ? response.data.articles.bm.length : 0
             let nn_length = response.data.articles.nn ? response.data.articles.nn.length : 0
             let total_length = bm_length + nn_length
+            let dict = self.lang
 
           // Similar
           if (bm_length == 0 || nn_length == 0) {
               if (!advanced_search) {
-                let dict = self.lang
+                
                 if (dict == 'bm,nn' && total_length > 0) {
                   dict = bm_length == 0? 'bm' : 'nn'
                 }
@@ -326,10 +330,30 @@ function navigate_to_query(self, word, keep_page) {
           if (total_length == 0) {
             self.waiting_for_articles = false
             self.no_results = true
+            if (!self.scope.includes('f')) {
+              let params = {q, dict, n: 1, dform: 'int', include: 'f', wc: self.pos_selected}
+              api.get('suggest?', {params}).then((response) => { 
+                console.log(response.data.a)
+                      self.suggest_fulltext = response.data.cnt > 0
+                      console.log(response.data.a.freetext)
+                      console.log("suggest",self.suggest_fulltext)
+                    }).catch(error => {
+                      self.handle_error(error)
+                      self.replace_history()     
+                    })
+            }
+            if (dict != 'bm,nn') {
+              let params = {q, n: 1, dict: dict=='bm'?'nn':'bm', dform: 'int', include: 'e', wc: self.pos_selected}
+              api.get('suggest?', {params}).then((response) => { 
+                      self.suggest_other_dict = response.data.cnt > 0 && response.data.a.exact[0][0] == q
+                    }).catch(error => {
+                      self.handle_error(error)
+                      self.replace_history()     
+                    })
+            }
             self.replace_history() // fixes routing bug when going back from suggested search
           }
           else {
-
             self.no_results = false
             Promise.all([
               load_articles(self, query, offset, self.perPage, "bm"),
@@ -369,7 +393,10 @@ export default {
       perPage: 10,
       inflection_suggestions: null,
       similar: null,
-      selected: null
+      selected: null,
+      suggest_fulltext: false,
+      suggest_other_dict: false
+
     }
   },
   computed: {
@@ -400,7 +427,9 @@ export default {
                               perPage: this.perPage,
                               selected: this.selected,
                               inflection_suggestions: this.inflection_suggestions,
-                              similar: this.similar}, '')
+                              similar: this.similar,
+                              suggest_fulltext: this.suggest_fulltext,
+                              suggest_other_dict: this.suggest_other_dict}, '')
 
 
     },
@@ -435,6 +464,8 @@ export default {
       this.search_results = {}
       this.inflection_suggestions = []
       this.similar = []
+      this.suggest_fulltext = false
+      this.suggest_other_dict = false
       if (error.response) {
         if (error.response.status == 404) {
           if (article) {
@@ -672,7 +703,9 @@ export default {
         self.perPage = event.state.perPage
         self.selected = event.state.selected
         self.inflection_suggestions = event.state.inflection_suggestions,
-        self.similar = event.state.similar
+        self.similar = event.state.similar,
+        self.suggest_fulltext = event.state.suggest_fulltext,
+        self.suggest_other_dict = event.state.suggest_other_dict
       }
     }
   }
-- 
GitLab