Browse Source

add Creation queries fields & simulate it as a text_produit

axolotle 2 years ago
parent
commit
f9216653a6

+ 2 - 1
src/api/fragments/NodeFull.gql

@@ -5,7 +5,7 @@ fragment NodeFull on MapItemInterface {
 
   ... on Textref {
     preTitle: field_titre_regular
-    title: field_titre_italique
+    italTitle: field_titre_italique
     link: lien_reference {
       title
       url
@@ -33,6 +33,7 @@ fragment NodeFull on MapItemInterface {
         variant: familles {
           id
         }
+
         ... on Textprod {
           parents: text_de_depart {
             id

+ 38 - 1
src/api/fragments/NodeInitial.gql

@@ -63,7 +63,7 @@ fragment NodeInitial on MapItemInterface {
     }
 
     preTitle: field_titre_regular
-    title: field_titre_italique
+    italTitle: field_titre_italique
 
     edition {
       name
@@ -75,5 +75,42 @@ fragment NodeInitial on MapItemInterface {
         id
       }
     }
+
+    creations: field_creations {
+      id
+    }
+  }
+
+  ... on Creation {
+    parents: texte_de_depart {
+      id
+      variant: familles {
+        id
+      }
+    }
+
+    siblings: rebonds {
+      id
+    }
+
+    authors: auteurs {
+      id
+      name
+      first_name
+      last_name
+    }
+
+    date {
+      start
+      # end
+    }
+
+    images {
+      id
+      url
+      alt
+    }
+
+    title
   }
 }

+ 3 - 1
src/api/fragments/NodePartial.gql

@@ -28,7 +28,9 @@ fragment NodePartial on MapItemInterface {
     strangeness: degres_detrangement
   }
 
-
+  ... on Creation {
+    content: texte
+  }
 
   # For debug
   path

+ 1 - 1
src/components/nodes/NodeViewTitle.vue

@@ -13,7 +13,7 @@
       <span><strong>{{ toCommaList(node.authors) }}</strong>,</span>
       <span>
         <span v-if="node.preTitle" v-html="' ' + trim(node.preTitle) + ','" />
-        <em v-html="' ' + trim(node.title) || 'pas de titre ital'" />
+        <em v-html="' ' + trim(node.italTitle) || 'pas de titre ital'" />
         <span v-if="edition && node.edition">, </span>
       </span>
       <div v-if="edition && node.edition" class="edition">

+ 2 - 1
src/messages/fr.json

@@ -16,7 +16,8 @@
     "reflexion": "Réflexion théorique",
     "lecture": "Lecture rapprochée",
     "sensible": "Expérience sensible",
-    "kit": "Fiche-outil de désapprentisage"
+    "kit": "Fiche-outil de désapprentisage",
+    "creation": "Création numérique"
   },
   "options": {
     "display": {

+ 2 - 1
src/store/modules/library.js

@@ -7,6 +7,7 @@ import {
   getUniqueNodesIds,
   getRelatedNodesIds,
   getRandomIds,
+  parseTree,
   buildTree
 } from '@/store/utils.js'
 
@@ -185,7 +186,7 @@ export default {
       commit('SET_NODE_DEPART_ID', id)
 
       if (!(id in state.trees)) {
-        const treeData = await api.queryRecursiveNodes([id])
+        const treeData = parseTree(await api.queryRecursiveNodes([id]))
         const nodes = await dispatch('GET_NODES', { ids: getUniqueNodesIds(treeData), dataLevel: 'initial' })
         commit('ADD_NODE_TREE', [id, buildTree(treeData, nodes)])
       }

+ 13 - 0
src/store/nodes.js

@@ -34,6 +34,19 @@ export default {
       function addNode (node, level) {
         const stateNode = node.id in state.nodes ? state.nodes[node.id] : undefined
 
+        if ('creations' in node) {
+          if (node.creations) {
+            if (!Array.isArray(node.children)) {
+              node.children = []
+            }
+            node.creations.forEach(item => {
+              item.variant = [{ id: 0 }]
+              node.children.push(item)
+            })
+          }
+          delete node.creations
+        }
+
         if (node.variant === null || Array.isArray(node.variant)) {
           node.variant = node.variant !== null ? ID_VARIANTS[node.variant[0].id] : 'dark'
         }

+ 26 - 2
src/store/utils.js

@@ -20,8 +20,8 @@ export const ID_VARIANTS = {
   6: 'reflexion',
   7: 'lecture',
   8: 'sensible',
-  23: 'kit'
-  // undefined: 'creation'
+  23: 'kit',
+  0: 'creation'
 }
 
 export const VARIANT_IDS = Object.fromEntries(
@@ -86,6 +86,30 @@ export function getRandomIds (ids, count = 3) {
 }
 
 
+export function parseTree (treeData) {
+  if ('creations' in treeData) {
+    if (treeData.creations) {
+      if (!Array.isArray(treeData.children)) {
+        treeData.children = []
+      }
+      treeData.creations.forEach(item => {
+        item.variant = [{ id: 0 }]
+        treeData.children.push(item)
+      })
+    }
+    delete treeData.creations
+  }
+
+  for (const relation of RELATIONS) {
+    if (relation in treeData && treeData[relation]) {
+      treeData[relation] = treeData[relation].map(node => parseTree(node))
+    }
+  }
+
+  return treeData
+}
+
+
 export function buildTree (treeData, nodesData) {
   const uniqueIds = []
   const nodes = []