<template> <div :class="editorMode ? 'treenode-org' : 'treenode'"> <!--b v-if="v_tematu">v tematu</b> <b v-if="visible">visible</b> Force visible: {{String(force_visible)}}--> <component :is='item.node.polymorphic_ctype.model' :item='item' :key='item.node.id' :editorMode="editorMode" :debugMode="debugMode"></component> <button v-if="debugMode" v-on:click="debugShow = !debugShow" class="nodebug">Ladící data</button> <!-- bude tu nějaký if na class="nodebug", v debug módu bude tlačítko vidět, jinak ne --> <div v-if="debugShow"> <pre>{{ item.node.polymorphic_ctype.model }}</pre> <pre>{{ item }}</pre> </div> <div v-if="item.children.length === 0"> <div v-if="item.appendable_children.length > 0 && editorMode"> <b>Vložit jako syna: </b> <addnewnode :types="item.appendable_children" :refnode="item.node" where="syn" /> </div> </div> <div v-else :class="editorMode ? 'children-org' : 'children'"> <!-- bude tu nějaký if na class="children" --> <div v-if="item.children.length > 0 && item.children[0].appendable_siblings.length > 0 && editorMode"> <b>Vložit před: </b> <addnewnode :types="item.children[0].appendable_siblings" :refnode="item.children[0].node" where="pred" /> </div> <div v-if="item.node.polymorphic_ctype.model==='temavcislenode'"> <!--Children: {{String(showChildren)}}--> <div v-for="(chld, index) in item.children" v-bind:key="chld.nazev" > <!--Hide: {{hideNode(chld)}}, v tematu: {{v_tematu}}, force_visible: {{force_visible}}--> <div v-if="!hideNode(chld)"> <div v-if="chld.node.polymorphic_ctype.model==='ulohazadaninode'"> <button v-if="showChildren" v-on:click="showChildren=!showChildren"> Schovat </button> <button v-else v-on:click="showChildren=!showChildren"> Rozbalit </button> <TreeNode :item="chld" :v_tematu="true" :force_visible="showChildren" :editorMode="editorMode" :debugMode="debugMode"> </TreeNode> </div> <div v-else> <TreeNode :item="chld" :v_tematu="true" :force_visible="showChildren" :editorMode="editorMode" :debugMode="debugMode"> </TreeNode> </div> <div v-if="chld.appendable_siblings.length > 0 && editorMode" > <b v-if="index < (item.children.length - 1)">Vložit mezi: </b> <b v-else>Vložit za: </b> <addnewnode :types="chld.appendable_siblings" :refnode="chld.node" where="za" /> </div> </div> </div> <button v-if="showChildren" v-on:click="showChildren=!showChildren"> Schovat </button> <button v-else v-on:click="showChildren=!showChildren"> Rozbalit </button> </div> <div v-else> <div v-for="(chld, index) in item.children" v-bind:key="chld.nazev" > <div v-if="v_tematu && chld.node.polymorphic_ctype.model==='ulohazadaninode'"> <div> Tady možná něco je </div> <TreeNode :item="chld" :v_tematu="v_tematu" :force_visible="force_visible" :editorMode="editorMode" :debugMode="debugMode"> </TreeNode> </div> <div v-else> <TreeNode :item="chld" :v_tematu="v_tematu" :force_visible="force_visible" :editorMode="editorMode" :debugMode="debugMode"> </TreeNode> </div> <div v-if="chld.appendable_siblings.length > 0 && editorMode" > <b v-if="index < (item.children.length - 1)">Vložit mezi: </b> <b v-else>Vložit za: </b> <addnewnode :types="chld.appendable_siblings" :refnode="chld.node" where="za" /> </div> </div> </div> </div> </template> <script> import rocniknode from './RocnikNode.vue' import cislonode from './CisloNode.vue' import temavcislenode from './TemaVCisleNode.vue' import castnode from './CastNode.vue' import textnode from './TextNode.vue' import ulohazadaninode from './UlohaZadaniNode.vue' import ulohavzoraknode from './UlohaVzorakNode.vue' import addnewnode from './AddNewNode.vue' export default { name: 'TreeNode', components: { rocniknode, cislonode, temavcislenode, castnode, textnode, ulohazadaninode, ulohavzoraknode, addnewnode }, data: () => ({ debugShow: false, showChildren: false }), computed: { }, props: { item: Object, force_visible: Boolean, v_tematu: Boolean, editorMode: Boolean, debugMode: Boolean, }, methods: { hideNode: function(chld){ if (this.showChildren || this.force_visible){ return false; } if (chld.node.polymorphic_ctype.model === 'ulohazadaninode'){ return false; } return true; } } } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> .treenode-org { padding: 5px; margin: 5px; border: #6a0043 2px solid; } .children-org { padding: 10px; margin: 5px; border: #6a0043 2px dashed; } .nodebug { /* display: none; */ } </style>