add nodes style based on text props

This commit is contained in:
axolotle
2021-02-24 22:13:02 +01:00
parent 7813b9aa07
commit ced1d9c354
3 changed files with 30 additions and 13 deletions
+18 -6
View File
@@ -12,8 +12,8 @@
:key="index"
:cx="node.x"
:cy="node.y"
:fill="getNodeFill(node)"
:r="5"
:class="node.data.class"
:r="node.children ? 7 : 5"
>
<title>{{ node.data.name }}</title>
</circle>
@@ -107,10 +107,6 @@ export default {
.force('center', forceCenter(this.width * 0.5, this.height * 0.5))
},
getNodeFill (node) {
return node.data.type === 'textref' ? 'red' : 'black'
},
// DRAG EVENT HANDLER
onNodeDragStart (e, node) {
@@ -142,4 +138,20 @@ export default {
</script>
<style lang="scss" scoped>
path {
stroke: grey;
}
@each $id in map-keys($families){
.family-#{$id} {
fill: setColorFromId($id);
@if $id == 9 {
stroke: black;
}
}
}
.first {
stroke-width: 2px;
}
</style>
+2 -2
View File
@@ -15,8 +15,8 @@ export default {
},
created () {
this.$store.dispatch('GET_TEXT', 1).then(({ data }) => {
this.text = data.data.textref
this.$store.dispatch('GET_TEXT', { id: 1 }).then(data => {
this.text = data.textref
})
}
}
+10 -5
View File
@@ -27,26 +27,31 @@ export default new Vuex.Store({
'GET_TREE' ({ dispatch }, id) {
return api.post('', { query: print(TextdepartRecursive), variables: { id } }).then(({ data }) => {
return parse(data.data.textref)
const text = data.data.textref
return parse(text, text.id)
})
}
}
})
// Temp data processing
function parse (d) {
function parse (d, originalId) {
const child = {
name: d.title,
type: d.__typename.toLowerCase()
type: d.__typename.toLowerCase(),
class: 'family-' + d.familles[0].id
}
if (d.id === originalId) {
child.class += ' first'
}
let children = []
for (const key of ['text_en_rebond', 'text_produits']) {
if (d[key]) {
children = [...children, ...d[key].map(text => parse(text))]
children = [...children, ...d[key].filter(text => text.id !== originalId)]
}
}
if (children.length) {
child.children = children
child.children = children.map(child => parse(child, originalId))
}
return child
}