Browse Source

#2088 Étiquettes et présentation des manifestations

bach 10 months ago
parent
commit
d4e66bfaca
1 changed files with 60 additions and 15 deletions
  1. 60 15
      src/pages/Bibliographie.vue

+ 60 - 15
src/pages/Bibliographie.vue

@@ -1,6 +1,6 @@
 <template>
   <MainContentLayout id="biblio">
-    <template v-if="!content" #header>
+    <template v-if="!expressions.meta || !manifestations.meta" #header>
       <span class="loading">Chargement ...</span>
     </template>
     <template v-else #header>
@@ -22,7 +22,7 @@
               :to="{ name:'bibliographie', params: { type: 'manifestations'}}"
               title="Consulter toutes les manifestations"
             >
-            {{ manifestations.meta.quantity.quantity }} {{ manifestations.meta.quantity.unit }}
+              {{ manifestations.meta.quantity.quantity }} {{ manifestations.meta.quantity.unit }}
             </router-link>
           </li>
         </ul>
@@ -46,7 +46,7 @@
           </h2>
           <p class="date">{{ item.dates }}</p>
           <em class="titles">{{ item.titles }}</em>
-          <aside v-if="item.manifestations.length">
+          <aside v-if="item.manifestations && item.manifestations.length">
             <h5
               @click.prevent="onToggleManifs"
               @keyup.enter="onToggleManifs"
@@ -84,24 +84,46 @@
         </li>
       </ul>
     </template>
-    <!-- or item -->
+    <!-- or expression / manifestation item -->
     <template v-else>
       <div class="biblio-item">
         <h2>{{ item.type }}</h2>
+        <h2 v-html="item.tei" />
         <p class="author">Auteur: {{ item.authors }}</p>
         <p v-if="item.dates" class="date">Dates : {{ item.dates }}</p>
-        <h3>Liste des manifestations :</h3>
-        <ul vi-if="item.manifestations.length" class="item-list">
+        <p v-if="item.edition" class="date">Édition : {{ item.edition }}</p>
+        <p v-if="item.editeur" class="date" v-html="'Éditeur : ' + item.editeur" />
+        <p v-if="item.lieu" class="date">Lieu de publication : {{ item.lieu }}</p>
+        <p v-if="item.extent" class="date">Format : {{ item.extent }}</p>
+        <!-- manifestation -->
+        <h3 v-if="item.manifestations && item.manifestations.length">Liste des manifestations :</h3>
+        <ul v-if="item.manifestations && item.manifestations.length" class="item-list">
           <li v-for="manif in item.manifestations" :key="manif.uuid">
-            <p v-html="manif.tei"/>
+            <p v-html="manif.tei" />
             <router-link
               :to="{ name:'bibliographieItem', params:{ type:'manifestations', uuid:manif.uuid } }"
               v-html="manif.path"
             />
           </li>
         </ul>
-        <ul vi-if="item.idno.length" class="item-list">
-          <li v-for="id in item.idno" :key="id.url">
+        <!-- note -->
+        <h3 v-if="item.notes && item.notes.length">Note :</h3>
+        <ul v-if="item.notes && item.notes.length" class="notes-list">
+          <li v-for="note in item.notes" :key="note.uuid">
+            <p v-html="note.tei" />
+          </li>
+        </ul>
+        <!-- BNF -->
+        <h3 v-if="noticesbnf.length">Notices BnF :</h3>
+        <ul v-if="noticesbnf.length" class="item-list">
+          <li v-for="id in noticesbnf" :key="id.url">
+            <a :href="id.url">{{ id.type }}: {{ id.url }}</a>
+          </li>
+        </ul>
+        <!-- GALLICA -->
+        <h3 v-if="noticesgallica.length">Exemplaires sur Gallica :</h3>
+        <ul v-if="noticesgallica.length" class="item-list">
+          <li v-for="id in noticesgallica" :key="id.url">
             <a :href="id.url">{{ id.type }}: {{ id.url }}</a>
           </li>
         </ul>
@@ -109,7 +131,7 @@
       </div>
     </template>
 
-    <template  v-if="!uuid && type === 'manifestations'" #nav>
+    <template v-if="!uuid && type === 'manifestations'" #nav>
       <ul class="authors-filters">
         <li
           v-for="author in authors" :key="author"
@@ -122,13 +144,13 @@
         </li>
       </ul>
     </template>
-    <template  v-else #nav>
+    <template v-else #nav>
       <aside class="expression-links">
         <p>
-          Permalien:<br/><a :href="`${item.url}`">{{ item.url }}</a>
+          Permalien:<br><a :href="`${item.url}`">{{ item.url }}</a>
         </p>
         <p>
-          JSON:<br/><a :href="`${apipath}${item.path}${item.uuid}`">{{ apipath }}{{ item.path }}{{ item.uuid }}</a>
+          JSON:<br><a :href="`${apipath}${item.path}${item.uuid}`">{{ apipath }}{{ item.path }}{{ item.uuid }}</a>
         </p>
       </aside>
     </template>
@@ -163,6 +185,28 @@ export default {
   computed: {
     apipath () {
       return window.apipath
+    },
+    noticesbnf (item) {
+      let n = []
+      if (this.item && this.item.idno && this.item.idno.length) {
+        this.item.idno.forEach(id => {
+          if (id.type === 'catBnf') {
+            n.push(id)
+          }
+        })
+      }
+      return n
+    },
+    noticesgallica (item) {
+      let n = []
+      if (this.item && this.item.idno && this.item.idno.length) {
+        this.item.idno.forEach(id => {
+          if (id.type === 'gallica') {
+            n.push(id)
+          }
+        })
+      }
+      return n
     }
   },
   watch: {
@@ -227,6 +271,7 @@ export default {
           console.log('Biblio REST item: data', data)
           if (data.content) {
             this.item = data.content
+            console.log('getItem item', this.item)
           }
         })
         .catch((error) => {
@@ -260,7 +305,7 @@ export default {
 
       this.authors = []
       this.manifestations.content.forEach(manif => {
-        // console.log('this.authors', this.authors)
+        // console.log('manif', manif)
         if (this.authors.indexOf(manif.authors) === -1) {
           this.authors.push(manif.authors)
           this.activeAuthors.push(manif.authors)
@@ -278,7 +323,7 @@ export default {
         this.expressions.content[i].manifestations = manifs
       })
       this.content = this.expressions.content
-      console.log('content parsed', this.expressions, this.manifestations)
+      console.log('Biblio content parsed', this.expressions, this.manifestations)
     },
     onToggleManifs (e) {
       console.log('togle manifs', e)