TreeNode editor | pridavani novych polozek (WIP)
This commit is contained in:
		
							parent
							
								
									ba9f869193
								
							
						
					
					
						commit
						40e2b2bdfc
					
				
					 7 changed files with 101 additions and 38 deletions
				
			
		|  | @ -173,20 +173,24 @@ class NodeTypes(Enum): | |||
| 
 | ||||
| @register.simple_tag | ||||
| def appendableChildren(value): | ||||
| 	print(value) | ||||
| 	print(value.node) | ||||
| 	print(isUlohaZadani(value.node)) | ||||
| 	if isTemaVCisle(value.node): | ||||
| 		return (NodeTypes.RESENI.value, | ||||
| 			NodeTypes.ULOHAZADANI.value, | ||||
| 			NodeTypes.ULOHAVZORAK.value, | ||||
| 			NodeTypes.CAST.value, | ||||
| 			NodeTypes.TEXT.value, | ||||
| 		return (NodeTypes.RESENI.value[0], | ||||
| 			NodeTypes.ULOHAZADANI.value[0], | ||||
| 			NodeTypes.ULOHAVZORAK.value[0], | ||||
| 			NodeTypes.CAST.value[0], | ||||
| 			NodeTypes.TEXT.value[0], | ||||
| 			) | ||||
| 	if isOrgText(value.node) or isReseni(value.node) or isUlohaZadani(value.node) or isUlohaVzorak(value.node): | ||||
| 		return (NodeTypes.CAST.value, | ||||
| 			NodeTypes.TEXT.value, | ||||
| 		print("Text/Cast") | ||||
| 		return (NodeTypes.CAST.value[0], | ||||
| 			NodeTypes.TEXT.value[0], | ||||
| 			) | ||||
| 	if isCast(value.node): | ||||
| 		return appendableChildren(value.parent) | ||||
| 	return None | ||||
| 	return [] | ||||
| 
 | ||||
| @register.simple_tag | ||||
| def canAppendReseni(value): | ||||
|  |  | |||
							
								
								
									
										38
									
								
								vue_frontend/src/components/AddNewNode.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								vue_frontend/src/components/AddNewNode.vue
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,38 @@ | |||
| <template> | ||||
| 	<div class="addnewnode"> | ||||
| 		<button v-if="types.includes('castNode')" v-on:click="selected='castNode'" :disabled="selected && selected !== 'castNode'">Část</button> | ||||
| 		<button v-if="types.includes('textNode')" v-on:click="selected='textNode'" :disabled="selected && selected !== 'textNode'">Text</button> | ||||
| 		<button v-if="types.includes('reseniNode')" v-on:click="selected='reseniNode'" :disabled="selected && selected !== 'reseniNode'">Řešení</button> | ||||
| 		<button v-if="types.includes('ulohaZadaniNode')" v-on:click="selected='ulohaZadaniNode'" :disabled="selected && selected !== 'ulohaZadaniNode'">Zadání úlohy</button> | ||||
| 		<button v-if="types.includes('ulohaVzorakNode')" v-on:click="selected='ulohaVzorakNode'" :disabled="selected && selected !== 'ulohaVzorakNode'">Vzorák</button> | ||||
| 		<div v-if="selected"> | ||||
| 			<component :is='selected' :item='null' create></component> | ||||
| 		</div> | ||||
| 	</div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import castNode from './CastNode.vue' | ||||
| import textNode from './TextNode.vue' | ||||
| import ulohaZadaniNode from './UlohaZadaniNode.vue' | ||||
| import ulohaVzorakNode from './UlohaVzorakNode.vue' | ||||
| //import reseniNode from './UlohaVzorakNode.vue' | ||||
| 
 | ||||
| export default { | ||||
| 	name: 'AddNewNode', | ||||
| 	props: { | ||||
| 		types: Array, | ||||
| 		where: String | ||||
| 	}, | ||||
| 	data: () => ({ | ||||
| 		selected: null, | ||||
| 		cast: 'castnode', | ||||
| 	}), | ||||
| 	components: { | ||||
| 		castNode, | ||||
| 		textNode, | ||||
| 		ulohaZadaniNode, | ||||
| 		ulohaVzorakNode, | ||||
| 	} | ||||
| } | ||||
| </script> | ||||
|  | @ -21,12 +21,20 @@ export default { | |||
| 		originalText: "", | ||||
| 	}), | ||||
| 	props: { | ||||
| 		item: Object | ||||
| 		item: Object, | ||||
| 		editorShow: Boolean, | ||||
| 		create: Boolean, | ||||
| 	}, | ||||
| 	mounted: function() { | ||||
| 		console.log("mounted"); | ||||
| 		if (this.create){ | ||||
| 			this.currentText = ""; | ||||
| 			this.originalText = ""; | ||||
| 			this.editorShow = true; | ||||
| 		} | ||||
| 		else { | ||||
| 			this.currentText = this.item.node.nadpis; | ||||
| 			this.originalText = this.item.node.nadpis; | ||||
| 		} | ||||
| 		//this.getText(); | ||||
| 	}, | ||||
| 	methods: { | ||||
|  | @ -36,7 +44,7 @@ export default { | |||
| 			// FIXME really save! | ||||
| 			this.editorShow = false; | ||||
| 		} | ||||
| 	} | ||||
| 	},  | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
|  |  | |||
|  | @ -38,7 +38,7 @@ export default { | |||
| 	}), | ||||
| 	computed: { | ||||
| 		changedObject: function () { | ||||
| 			console.log(this.currentText); | ||||
| 			//console.log(this.currentText); | ||||
| 			//console.log(this.originalText); | ||||
| 			return { | ||||
| 				changed: this.currentText !== this.originalText, | ||||
|  | @ -46,12 +46,21 @@ export default { | |||
| 			} | ||||
| 	}, | ||||
| 	props: { | ||||
| 		item: Object | ||||
| 		item: Object, | ||||
| 		editorShow: Boolean, | ||||
| 		create: Boolean | ||||
| 	}, | ||||
| 	mounted: function() { | ||||
| 		console.log("mounted"); | ||||
| 		//console.log("mounted"); | ||||
| 		if (this.create){ | ||||
| 			this.currentText = ""; | ||||
| 			this.originalText = ""; | ||||
| 			this.editorShow = true; | ||||
| 		} else { | ||||
| 			this.currentText = this.item.node.text.na_web; | ||||
| 			this.originalText = this.item.node.text.na_web; | ||||
| 
 | ||||
| 		} | ||||
| 		//this.getText(); | ||||
| 	}, | ||||
| 	methods: { | ||||
|  |  | |||
|  | @ -9,20 +9,12 @@ | |||
| 	<div v-if="item.children.length === 0"> | ||||
| 	<div v-if="item.appendable_children.length > 0"> | ||||
| 		<b>Vložit jako syna</b> | ||||
| 		<ul> | ||||
| 			<li v-for="chld in item.appendable_children" :key="chld[0]"> | ||||
| 				<a href="">{{chld[1]}}</a> | ||||
| 			</li> | ||||
| 		</ul> | ||||
| 		<addnewnode :types="item.appendable_siblings" where="syn" />  | ||||
| 	</div> | ||||
| 	</div> | ||||
| 	<div v-if="item.children.length > 0 && item.children[0].appendable_siblings.length > 0"> | ||||
| 		<b>Vložit před</b> | ||||
| 		<ul> | ||||
| 			<li v-for="sibl in item.children[0].appendable_siblings" :key="sibl[0]"> | ||||
| 				<a href="">{{sibl[1]}}</a> | ||||
| 			</li> | ||||
| 		</ul> | ||||
| 		<addnewnode :types="item.children[0].appendable_siblings" where="pred" />  | ||||
| 	</div> | ||||
| 
 | ||||
| 	<ul> | ||||
|  | @ -32,11 +24,7 @@ | |||
| 			<div v-if="chld.appendable_siblings.length > 0"> | ||||
| 				<b v-if="index < (item.children.length - 1)">Vložit mezi</b> | ||||
| 				<b v-else>Vložit za</b> | ||||
| 				<ul> | ||||
| 					<li v-for="sibl in chld.appendable_siblings" :key="sibl[0]"> | ||||
| 						<a href="">{{sibl[1]}}</a> | ||||
| 					</li> | ||||
| 				</ul> | ||||
| 				<addnewnode :types="chld.appendable_siblings" where="za" />  | ||||
| 			</div> | ||||
| 		</li> | ||||
| 	</ul> | ||||
|  | @ -52,7 +40,7 @@ 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', | ||||
|  | @ -64,6 +52,7 @@ export default { | |||
| 		textnode, | ||||
| 		ulohazadaninode, | ||||
| 		ulohavzoraknode, | ||||
| 		addnewnode | ||||
| 	}, | ||||
| 	data: () => ({ | ||||
| 		debugShow: false, | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <template> | ||||
| 	<div class="ulohavzoraknode"> | ||||
| 		<!--pre>UlohaVzorakNode {{item}} {{typeof(item)}}</pre--> | ||||
| 		<h5>Řešení {{item.node.uloha.cislo_zadani.poradi}}.{{ item.node.uloha.kod }}: {{ item.node.uloha.nazev }}</h5> | ||||
| 		<!--h5>Řešení {{item.node.uloha.cislo_zadani.poradi}}.{{ item.node.uloha.kod }}: {{ item.node.uloha.nazev }}</h5--> | ||||
| 	</div> | ||||
| </template> | ||||
| 
 | ||||
|  | @ -9,7 +9,14 @@ | |||
| export default { | ||||
| 	name: 'UlohaVzorakNode', | ||||
| 	props: { | ||||
| 		item: Object | ||||
| 		item: Object, | ||||
| 		create: Boolean | ||||
| 	}, | ||||
| 	mounted: function(){ | ||||
| 		if (this.item.node.uloha === null){ | ||||
| 			console.log("Uloha je null!"); | ||||
| 			console.log(this.item); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| </script> | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <template> | ||||
| 	<div class="ulohazadaninode"> | ||||
| 		<!--pre>UlohaZadaniNode {{item.node.uloha}} {{typeof(item)}}</pre--> | ||||
| 		<h5>Zadání {{item.node.uloha.cislo_zadani.poradi}}.{{ item.node.uloha.kod }}: {{ item.node.uloha.nazev }}</h5> | ||||
| 		<!--h5>Zadání {{item.node.uloha.cislo_zadani.poradi}}.{{ item.node.uloha.kod }}: {{ item.node.uloha.nazev }}</h5--> | ||||
| 	</div> | ||||
| </template> | ||||
| 
 | ||||
|  | @ -9,7 +9,15 @@ | |||
| export default { | ||||
| 	name: 'UlohaZadaniNode', | ||||
| 	props: { | ||||
| 		item: Object | ||||
| 		item: Object, | ||||
| 		created: Boolean | ||||
| 	, | ||||
| 	mounted: function(){ | ||||
| 		if (this.item.node.uloha === null){ | ||||
| 			console.log("Uloha je null!"); | ||||
| 			console.log(this.item); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| } | ||||
| </script> | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue