From ce8faaf3dfd44bbb0ebf7428956c635a7089fdd5 Mon Sep 17 00:00:00 2001 From: dcz <dcz@ipipan.waw.pl> Date: Thu, 30 Jun 2022 23:07:33 +0200 Subject: [PATCH] Role type selection. --- .../entries/js/components/LexicalUnitEdit.js | 15 ++++++++++++--- unifier/views.py | 4 +++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/entries/static/entries/js/components/LexicalUnitEdit.js b/entries/static/entries/js/components/LexicalUnitEdit.js index 69e9532..93dc339 100644 --- a/entries/static/entries/js/components/LexicalUnitEdit.js +++ b/entries/static/entries/js/components/LexicalUnitEdit.js @@ -265,7 +265,14 @@ Object.assign(LexicalUnitEdit, { let attributesHTML = role_attributes.map(attribute => { return `<label><input type="radio" name="attribute" value="${attribute.id}" /> ${attribute.attribute}</label><br />`; }).join(""); - return '<div class="row"><div class="column"><div class="role_select_header">Role</div>' + rolesHTML + '</div><div class="column"><div class="role_select_header">Atrybuty</div>' + attributesHTML + '</div></div>'; + const roleTypeHTML = ['role', 'modifier'].map(type => { + return `<label><input type="radio" name="role_type" value="${type}" /> ${type}</label><br />`; + }).join(""); + return '<div class="row">' + + '<div class="column"><div class="role_select_header">Type</div>' + roleTypeHTML + '</div>' + + '<div class="column"><div class="role_select_header">Role</div>' + rolesHTML + '</div>' + + '<div class="column"><div class="role_select_header">Atrybuty</div>' + attributesHTML + '</div>' + + '</div>'; }.bind(this); let change_role_popup = { @@ -343,13 +350,15 @@ Object.assign(LexicalUnitEdit, { e.preventDefault(); var role_id = normalizeFormData(f.role)[0]; + var role_type = normalizeFormData(f.role_type)[0]; - if (role_id != null) { + if (role_id != null && role_type != null) { var attribute_id = normalizeFormData(f.attribute)[0]; var data = { 'unified_frame_id': this.unified_frame.id, 'complement_id': this.active_unified_frame_argument.id, + 'role_type': role_type, 'role_id': role_id, 'attribute_id': attribute_id }; @@ -369,7 +378,7 @@ Object.assign(LexicalUnitEdit, { } }); } else { - alert(gettext("Musisz wybrać pzynajmniej rolę.")); + alert(gettext("Musisz wybrać typ oraz rolę.")); } } }.bind(this) diff --git a/unifier/views.py b/unifier/views.py index 6e7f95b..015e301 100644 --- a/unifier/views.py +++ b/unifier/views.py @@ -6,7 +6,7 @@ from django.http import JsonResponse from common.decorators import ajax_required from entries.polish_strings import EXAMPLE_SOURCE, EXAMPLE_OPINION from entries.views import get_scroller_params, get_alternations, get_prefs_list, schema2dict, frame2dict -from semantics.models import Frame, ArgumentRole, SemanticRole, RoleAttribute +from semantics.models import Frame, ArgumentRole, SemanticRole, RoleAttribute, RoleType from syntax.models import Schema from unifier.models import UnifiedFrameArgument, UnifiedRelationalSelectionalPreference, UnifiedFrame, \ UnifiedFrame2SlowalFrameMapping, UnifiedFrameArgumentSlowalFrameMapping @@ -321,6 +321,7 @@ def save_new_role(request): unified_frame_id = request.POST['unified_frame_id'] complement_id = request.POST['complement_id'] role_id = request.POST['role_id'] + role_type = request.POST['role_type'] attribute_id = request.POST.get('attribute_id', None) argumentRole = ArgumentRole.objects.filter(role_id=role_id, attribute_id=attribute_id).first() @@ -330,6 +331,7 @@ def save_new_role(request): unifiedFrameArgument = UnifiedFrameArgument.objects.get(unified_frame_id=unified_frame_id, id=complement_id) unifiedFrameArgument.role = argumentRole + unifiedFrameArgument.role_type = RoleType.objects.get(type=role_type) unifiedFrameArgument.save() return JsonResponse({}) -- GitLab