seminar | treenode editor | prepracovan system pridavani TreeNodu
Zatim jen rozepsano, nefunkcni.
This commit is contained in:
parent
e4818d28ea
commit
8bb6e770fe
7 changed files with 104 additions and 10 deletions
|
@ -27,3 +27,6 @@ div.node_type {
|
|||
background-color: #d4d4d4;
|
||||
}
|
||||
|
||||
.hidden-tn {
|
||||
display: none;
|
||||
}
|
||||
|
|
18
seminar/static/seminar/treenode_editor.js
Normal file
18
seminar/static/seminar/treenode_editor.js
Normal file
|
@ -0,0 +1,18 @@
|
|||
function showSelectedItemForm(sel,id){
|
||||
var option;
|
||||
var name;
|
||||
var div;
|
||||
Array.from(sel.options).forEach(function(option){
|
||||
console.log(option);
|
||||
name = 'pridat-'+option.value+'-'+id;
|
||||
div = document.getElementById(name);
|
||||
console.log(div);
|
||||
div.style.display = 'none';
|
||||
});
|
||||
name = sel.options[sel.selectedIndex].value;
|
||||
name = 'pridat-'+name+'-'+id;
|
||||
div = document.getElementById(name);
|
||||
console.log(div);
|
||||
div.style.display = 'block';
|
||||
|
||||
}
|
|
@ -10,6 +10,7 @@ dfsdfs
|
|||
|
||||
{% block custom_css %}
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'css/mamweb-dev.css' %}" />
|
||||
<script src="/static/seminar/treenode_editor.js"></script>
|
||||
{% endblock custom_css %}
|
||||
|
||||
{% load comments %}
|
||||
|
|
|
@ -5,13 +5,23 @@
|
|||
{% appendableChildren obj.parent as dostupne_typy %}
|
||||
{% endif %}
|
||||
|
||||
{# ulohaZadani ulohaVzorak Reseni Cast Text #}
|
||||
{% if dostupne_typy %}
|
||||
<div class="pink">Přidat {{kam}}
|
||||
<select name="pridat-typ-{{obj.node.id}}-{{kam_slug}}">
|
||||
<select name="pridat-typ-{{obj.node.id}}-{{kam_slug}}" onchange="showSelectedItemForm(this,'{{obj.node.id}}-{{kam_slug}}')">
|
||||
{% for typ in dostupne_typy %}
|
||||
<option value="{{typ.0}}">{{typ.1}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<button action="submit" formaction="{%url 'treenode_pridat' obj.node.id kam_slug%}">Přidat</button>
|
||||
<div class="hidden-tn" id="pridat-castNode-{{obj.node.id}}-{{kam_slug}}">
|
||||
Nadpis: <input name="pridat-cast-{{obj.node.id}}-{{kam_slug}}" type="text">
|
||||
<button action="submit" formaction="{%url 'treenode_pridat' obj.node.id kam_slug%}">Přidat</button>
|
||||
</div>
|
||||
<div class="hidden-tn" id="pridat-textNode-{{obj.node.id}}-{{kam_slug}}"> Vytvořit</div>
|
||||
<div class="hidden-tn" id="pridat-reseniNode-{{obj.node.id}}-{{kam_slug}}">Vytvořit, Tady bude autocomplete na reseniNode</div>
|
||||
<div class="hidden-tn" id="pridat-ulohaZadaniNode-{{obj.node.id}}-{{kam_slug}}">Vytvořit zadání</div>
|
||||
<div class="hidden-tn" id="pridat-ulohaVzorakNode-{{obj.node.id}}-{{kam_slug}}">Vytvořit vzorák k: Tady bude autocomplete na problémy k aktuálnímu kontextu</div>
|
||||
|
||||
|
||||
</div>
|
||||
{% endif %}{# appendablebleChildren #}
|
||||
|
|
|
@ -185,7 +185,45 @@ def appendableChildren(value):
|
|||
return appendableChildren(value.parent)
|
||||
return None
|
||||
|
||||
@register.simple_tag
|
||||
def canAppendReseni(value):
|
||||
if isTemaVCisle(value.node):
|
||||
return True
|
||||
if isCast(value.node):
|
||||
return canAppendReseni(value.parent)
|
||||
return False
|
||||
|
||||
@register.simple_tag
|
||||
def canAppendUlohaZadani(value):
|
||||
if isTemaVCisle(value.node):
|
||||
return True
|
||||
if isCast(value.node):
|
||||
return canAppendUlohaZadani(value.parent)
|
||||
return False
|
||||
|
||||
@register.simple_tag
|
||||
def canAppendUlohaVzorak(value):
|
||||
if isTemaVCisle(value.node):
|
||||
return True
|
||||
if isCast(value.node):
|
||||
return canAppendUlohaVzorak(value.parent)
|
||||
return False
|
||||
|
||||
@register.simple_tag
|
||||
def canAppendCast(value):
|
||||
if isTemaVCisle(value.node) or isOrgText(value.node) or isReseni(value.node) or isUlohaZadani(value.node) or isUlohaVzorak(value.node):
|
||||
return True
|
||||
if isCast(value.node):
|
||||
return canAppendCast(value.parent)
|
||||
return False
|
||||
|
||||
@register.simple_tag
|
||||
def canAppendText(value):
|
||||
if isTemaVCisle(value.node) or isOrgText(value.node) or isReseni(value.node) or isUlohaZadani(value.node) or isUlohaVzorak(value.node):
|
||||
return True
|
||||
if isCast(value.node):
|
||||
return canAppendText(value.parent)
|
||||
return False
|
||||
|
||||
#@register.filter
|
||||
#def is(value):
|
||||
|
|
|
@ -26,7 +26,7 @@ urlpatterns = [
|
|||
path('cislo/<int:rocnik>.<int:cislo>/', views.CisloView.as_view(), name='seminar_cislo'), # odkomentované jenom kvůli testování archivu
|
||||
path('problem/<int:pk>/', views.ProblemView.as_view(), name='seminar_problem'),
|
||||
path('treenode/<int:pk>/', views.TreeNodeView.as_view(), name='seminar_treenode'),
|
||||
path('treenode/editor/pridat/<int:pk>/<str:kam>/', views.TreeNodePridatView.as_view(), name='treenode_pridat'),
|
||||
path('treenode/editor/pridat/<str:co>/<int:pk>/<str:kam>/', views.TreeNodePridatView.as_view(), name='treenode_pridat'),
|
||||
path('treenode/editor/smazat/<int:pk>/', views.TreeNodeSmazatView.as_view(), name='treenode_smazat'),
|
||||
path('treenode/editor/odvesitpryc/<int:pk>/', views.TreeNodeOdvesitPrycView.as_view(), name='treenode_odvesitpryc'),
|
||||
path('treenode/editor/podvesit/<int:pk>/<str:kam>/', views.TreeNodePodvesitView.as_view(), name='treenode_podvesit'),
|
||||
|
|
|
@ -159,14 +159,40 @@ class TreeNodePridatView(generic.View):
|
|||
}
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
######## FIXME: ROZEPSANE, NEFUNGUJE, DOPSAT !!!!!! ###########
|
||||
node = s.TreeNode.objects.get(pk=self.kwargs['pk'])
|
||||
kam = self.kwargs['kam']
|
||||
co = self.kwargs['co']
|
||||
typ = self.type_from_str[co]
|
||||
|
||||
raise NotImplementedError('Neni to dopsane, dopis to!')
|
||||
|
||||
if kam not in ('pred','syn','za'):
|
||||
raise ValidationError('Přidat lze pouze před nebo za node nebo jako syna')
|
||||
|
||||
if co == m.TextNode:
|
||||
new_obj = m.Text()
|
||||
new_obj.save()
|
||||
elif co == m.CastNode:
|
||||
new_obj = m.CastNode()
|
||||
new_obj.nadpis = request.POST.get('pridat-castNode-{}-{}'.format(node.id,kam))
|
||||
new_obj.save()
|
||||
elif co == m.ReseniNode:
|
||||
new_obj = m.
|
||||
pass
|
||||
elif co == m.UlohaZadaniNode:
|
||||
pass
|
||||
elif co == m.UlohaReseniNode:
|
||||
pass
|
||||
else:
|
||||
new_obj = None
|
||||
|
||||
|
||||
if kam == 'pred':
|
||||
pass
|
||||
|
||||
|
||||
if kam not in ('syn','za'):
|
||||
raise ValidationError('Přidat lze pouze před nebo za node')
|
||||
if kam == 'syn':
|
||||
strtyp = request.POST.get('pridat-typ-{}-syn'.format(node.id))
|
||||
typ = self.type_from_str[strtyp]
|
||||
if typ == m.TextNode:
|
||||
text_obj = m.Text()
|
||||
text_obj.save()
|
||||
|
@ -174,8 +200,6 @@ class TreeNodePridatView(generic.View):
|
|||
else:
|
||||
node = treelib.create_child(node,typ)
|
||||
if kam == 'za':
|
||||
strtyp = request.POST.get('pridat-typ-{}-za'.format(node.id))
|
||||
typ = self.type_from_str[strtyp]
|
||||
if typ == m.TextNode:
|
||||
text_obj = m.Text()
|
||||
text_obj.save()
|
||||
|
@ -226,7 +250,7 @@ class SirotcinecView(generic.ListView):
|
|||
template_name = 'seminar/orphanage.html'
|
||||
|
||||
def get_queryset(self):
|
||||
return s.TreeNode.objects.not_instance_of(s.RocnikNode).filter(root=None,succ=None,father_of_first=None)
|
||||
return s.TreeNode.objects.not_instance_of(s.RocnikNode).filter(root=None,prev=None,succ=None,father_of_first=None)
|
||||
|
||||
class ProblemView(generic.DetailView):
|
||||
model = s.Problem
|
||||
|
|
Loading…
Reference in a new issue