add Creation queries fields & simulate it as a text_produit

This commit is contained in:
axolotle
2021-07-06 14:55:22 +02:00
parent 0c061298f5
commit f9216653a6
8 changed files with 87 additions and 8 deletions
+2 -1
View File
@@ -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
View File
@@ -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
View File
@@ -28,7 +28,9 @@ fragment NodePartial on MapItemInterface {
strangeness: degres_detrangement
}
... on Creation {
content: texte
}
# For debug
path
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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 = []