From 3c38c7bf18cb908819d48ae9f0ae7a08dfcf46a6 Mon Sep 17 00:00:00 2001
From: Henrik Askjer <henrik.askjer@uib.no>
Date: Tue, 25 Jan 2022 08:59:25 +0100
Subject: [PATCH] error message in invalid articles

---
 src/components/Article.vue | 12 ++++++++----
 src/components/Header.vue  |  1 +
 src/locales/eng.json       |  1 +
 src/locales/nno.json       |  1 +
 src/locales/nob.json       |  1 +
 5 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/components/Article.vue b/src/components/Article.vue
index dbf86d0c..53f8b7d3 100644
--- a/src/components/Article.vue
+++ b/src/components/Article.vue
@@ -1,9 +1,10 @@
 <template>
   <article class='v-sheet v-card rounded-xl' v-bind:class="{'collapsable': collapsable, 'collapsed': collapsed}" v-if="article">
-    <Header :title_id="title_id" :lemmas="article.lemmas" :dictionary="dictionary" :article_id="article.article_id" @toggle-collapse = "toggle_collapse"/>
+    <div v-if ="invalid"><v-icon left>warning</v-icon> {{$t('error.article', {no: article.article_id, dict: $t('dicts.'+this.dictionary)})}}</div>
+    <Header v-if="!invalid" :title_id="title_id" :lemmas="article.lemmas" :dictionary="dictionary" :article_id="article.article_id" @toggle-collapse = "toggle_collapse"/>
     <InflectionButton :lemmas="article.lemmas" :dictionary="dictionary" :article_id="article.article_id"/>
     
-    <div class="article_content" :class="$vuetify.breakpoint.name" v-if="!collapsed">
+    <div class="article_content" :class="$vuetify.breakpoint.name" v-if="!collapsed && !invalid">
       <section v-if="article.body.pronunciation && article.body.pronunciation.length" class="pronunciation">
         <h3>{{$t('article.headings.pronunciation', content_locale)}}</h3>
           <ul>
@@ -29,7 +30,7 @@
         </ul>
       </section>
     </div>
-    <ArticleFooter v-if="!collapsed" :article="article"/>
+    <ArticleFooter v-if="!collapsed && !invalid" :article="article"/>
 </article>
 </template>
 
@@ -81,7 +82,8 @@ export default {
   },
   data: function() {
     return {
-      is_collapsed: true
+      is_collapsed: true,
+      invalid: false
     }
   },
   metaInfo() {
@@ -153,6 +155,7 @@ export default {
       }
       } catch(error) {
         console.error("link_to_self",this.article.article_id, this.dictionary, error.message)
+        this.invalid = true
         //console.error(error)
         return {ref: "", article: this.article}
       }
@@ -237,6 +240,7 @@ export default {
       })
       } catch(error) {
         console.error("parse_definitions",this.article.article_id, this.dictionary, error.message)
+        this.invalid = true
         //console.error(error)
         definitionTexts = []
       }
diff --git a/src/components/Header.vue b/src/components/Header.vue
index 895ee4bd..c6ef8386 100644
--- a/src/components/Header.vue
+++ b/src/components/Header.vue
@@ -204,6 +204,7 @@ export default {
         }
     } catch(error) {
       console.error("lemma_groups",this.article_id, this.dictionary, error.message)
+      this.$parent.invalid = true
       //console.error(error)
     }
       return groups
diff --git a/src/locales/eng.json b/src/locales/eng.json
index 51c748fa..3af2b376 100644
--- a/src/locales/eng.json
+++ b/src/locales/eng.json
@@ -134,6 +134,7 @@
   }
 },
 "error": {
+      "article": "An error has occured in article {no} in {dict}",
       "404": {
           "title": "404: Not Found",
           "description": "The page may have been deleted or moved, or you may have used an invalid link."
diff --git a/src/locales/nno.json b/src/locales/nno.json
index 12a5a882..7d99aed9 100644
--- a/src/locales/nno.json
+++ b/src/locales/nno.json
@@ -134,6 +134,7 @@
         }
     },
     "error": {
+          "article": "Det har oppstått ein feil i artikkel {no} i {dict}",
           "404": {
               "title": "404: Ikkje funne",
               "description": "Sida kan ha blitt sletta eller flytta, eller du kan ha brukt ei ugyldig lenkje."
diff --git a/src/locales/nob.json b/src/locales/nob.json
index 1a21ad69..68cae7c1 100644
--- a/src/locales/nob.json
+++ b/src/locales/nob.json
@@ -146,6 +146,7 @@
       }
   },
   "error": {
+        "article": "Det har oppstått en feil i artikkel {no} i {dict}",
         "404": {
             "title": "404: Ikke funnet",
             "description": "Siden kan ha blitt slettet eller flyttet, eller du kan ha brukt en ugyldig lenke."
-- 
GitLab