WIP: CompensationAction using jstree

This commit is contained in:
2022-02-11 14:13:42 +01:00
parent 925d5f5070
commit 23790bca8d
10 changed files with 126 additions and 8 deletions

View File

@@ -0,0 +1,45 @@
<div id="jstree">
</div>
<input id="jstree-input" name="{{ widget.name }}[]" hidden="hidden"/>
<script>
$(function () {
$('#jstree').jstree({
'plugins': [
'checkbox',
],
'checkbox': {
'whole_node': false,
},
'core' : {
'data' : {
'url' : '{{ widget.attrs.url }}',
'data' : function (node) {
return { 'id' : node.id };
}
}
}
});
$('#jstree')
.on('deselect_node.jstree', function (e, data) {
$(data.selected).each(function (val){
console.log(val)
console.log(this)
$(this).after(
"<input name='{{widget.name}}[]' value="+val+"/>"
)
});
//$('#jstree-input').val(data.selected);
})
.on('select_node.jstree', function (e, data) {
$(data.selected).each(function (val){
$(this).after(
"<input name='{{widget.name}}[]' value="+val+"/>"
)
});
//$('#jstree-input').val(data.selected);
})
});
</script>

View File

@@ -0,0 +1,9 @@
{% load l10n %}
<ul>
{% for code in codes %}
<li id="{{code.pk|unlocalize}}" class="{% if code.is_leaf%}jstree-leaf{% else %}jstree-closed{% endif %}">
{{code.long_name}}
</li>
{% endfor %}
</ul>

View File

@@ -23,7 +23,7 @@ from konova.autocompletes import EcoAccountAutocomplete, \
ShareUserAutocomplete, BiotopeExtraCodeAutocomplete, CompensationActionDetailCodeAutocomplete
from konova.settings import SSO_SERVER, SSO_PUBLIC_KEY, SSO_PRIVATE_KEY, DEBUG
from konova.sso.sso import KonovaSSOClient
from konova.views import logout_view, home_view
from konova.views import logout_view, home_view, get_konova_code_action_children
sso_client = KonovaSSOClient(SSO_SERVER, SSO_PUBLIC_KEY, SSO_PRIVATE_KEY)
urlpatterns = [
@@ -40,6 +40,8 @@ urlpatterns = [
path('analysis/', include("analysis.urls")),
path('api/', include("api.urls")),
path("codes/comp/action/children", get_konova_code_action_children, name="codes-action-children"),
# Autocomplete paths for all apps
path("atcmplt/eco-accounts", EcoAccountAutocomplete.as_view(), name="accounts-autocomplete"),
path("atcmplt/interventions", InterventionAutocomplete.as_view(), name="interventions-autocomplete"),

View File

@@ -9,9 +9,12 @@ from django.contrib.auth import logout
from django.contrib.auth.decorators import login_required
from django.http import HttpRequest, FileResponse
from django.shortcuts import redirect, render, get_object_or_404
from django.template.loader import render_to_string
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from codelist.models import KonovaCode
from codelist.settings import CODELIST_COMPENSATION_ACTION_ID
from compensation.models import Compensation, EcoAccount
from intervention.models import Intervention
from konova.contexts import BaseContext
@@ -124,3 +127,24 @@ def get_500_view(request: HttpRequest):
"""
context = BaseContext.context
return render(request, "500.html", context, status=500)
@login_required
def get_konova_code_action_children(request: HttpRequest):
template = "konova/widgets/checkbox-tree-select-content.html"
_id = request.GET.get("id", None)
if _id == "#":
# Return all!
codes = KonovaCode.objects.filter(
code_lists__in=[CODELIST_COMPENSATION_ACTION_ID],
parent=None,
)
else:
codes = KonovaCode.objects.filter(
code_lists__in=[CODELIST_COMPENSATION_ACTION_ID],
parent__id=_id,
)
context = {
"codes": codes
}
return render(request, template, context)