From 7211e57d53f4c3827ddaf1f09a78d71797dfb77f Mon Sep 17 00:00:00 2001
From: Tomasz Bartosiak <tomasz.bartosiak@mozart.ipipan.waw.pl>
Date: Tue, 19 Jan 2016 15:54:42 +0100
Subject: [PATCH] Wyświetlanie lokacji dodanej jednostki leksykalnej

---
 semantics/static/js/semantics_frames.js        |  4 ++++
 semantics/static/js/semantics_lexical_units.js | 21 +++++++++++++++++++--
 semantics/static/js/semantics_view.js          |  4 ++++
 semantics/templates/semantics.html             |  2 ++
 semantics/views.py                             | 26 +++++++++++++++++++++-----
 5 files changed, 50 insertions(+), 7 deletions(-)

diff --git a/semantics/static/js/semantics_frames.js b/semantics/static/js/semantics_frames.js
index 87183cd..852b0dc 100644
--- a/semantics/static/js/semantics_frames.js
+++ b/semantics/static/js/semantics_frames.js
@@ -64,6 +64,10 @@ function displayFrames(){
 		u += '\n';
 	    }
 	    u += lexical_units[lid].definition;
+            if (lexical_units[lid].definition != '') {
+		u += '\n';
+	    }
+	    u += lexical_units[lid].location;
 	    u +='"> '; 
             u += lexical_units[lid].base + '-' + lexical_units[lid].sense;
             u += '</strong>';
diff --git a/semantics/static/js/semantics_lexical_units.js b/semantics/static/js/semantics_lexical_units.js
index 266e504..70fccd3 100644
--- a/semantics/static/js/semantics_lexical_units.js
+++ b/semantics/static/js/semantics_lexical_units.js
@@ -34,7 +34,7 @@ function createLexicalUnit(refl, glossa, relation, to) {
         refl_text = "";
     }
 
-    var lu = {base: base + refl_text, glossa: "" + glossa, definition: "", id: free_luid, luid: -1, refl: refl, glossa: glossa, pos: "czasownik", sense: free_sense, relation: relation, to: to};
+    var lu = {base: base + refl_text, glossa: "" + glossa, definition: "", id: free_luid, luid: -1, refl: refl, glossa: glossa, pos: "czasownik", sense: free_sense, relation: relation, to: to, location: ""};
     var operation = {operation: 'add_unit', unit:lu};
     lexical_units.push(lu);
     lexical_unit_examples[free_luid] = []
@@ -88,6 +88,15 @@ function setGlossa(luid, glossa) {
     units_operations.push({operation: 'set_glossa', unit: luid, value: lexical_units[i].glossa});
 }
 
+function getLocation(luid) {
+    if (isPLWNUnit(luid)){
+	var lu = lexical_units[indexOfId(lexical_units, luid)];
+	return lu.location;	
+    } else {
+	return "";
+    }
+}
+
 // save all changes to meanings (lexical units)
 function saveMeanings() {
     $.ajax({
@@ -119,7 +128,15 @@ function getMeanings() {
     
     var i;
     for (i = 0; i < lexical_units.length; i++) {
-        display += "<input type = \"radio\" name = \"meaning\" value = \"" + lexical_units[i].id + "\">" + lexical_units[i].base + "-" + lexical_units[i].sense + " <i>" + lexical_units[i].definition + "</i><br><div id=\"glossa_" + lexical_units[i].id + "\">" + lexical_units[i].glossa + "</div>";
+        display += "<input type = \"radio\" name = \"meaning\" value = \"" + lexical_units[i].id + "\">" + lexical_units[i].base + "-" + lexical_units[i].sense + "<div id=\"glossa_" + lexical_units[i].id + "\">" + " <i>" + lexical_units[i].definition + "</i>";
+	if (lexical_units[i].definition != "") {
+	    display += "<br>";
+	}
+	display += lexical_units[i].glossa 
+	if (lexical_units[i].glossa != "") {
+	    display += "<br>";
+	}
+	display += lexical_units[i].location + "</div>";
     }
     
     return display;
diff --git a/semantics/static/js/semantics_view.js b/semantics/static/js/semantics_view.js
index e127e3d..96c212a 100644
--- a/semantics/static/js/semantics_view.js
+++ b/semantics/static/js/semantics_view.js
@@ -767,6 +767,7 @@ function frameClick(clicked_id) {
                 $('#assign_role').attr('disabled', "True");
                 $('#add_preference').attr('disabled', "True");
                 $('#delete').attr('disabled', "True");
+		$('#multi_lus').attr('disabled', "True");
                 $('#change_lus').attr('disabled', "True");
 		$('#change_opinion').attr('disabled', "True");
             } else {
@@ -778,6 +779,7 @@ function frameClick(clicked_id) {
                 $('#assign_role').attr('disabled', "True");
                 $('#add_preference').attr('disabled', "True");
                 $('#delete').removeAttr('disabled');
+		$('#multi_lus').removeAttr('disabled');
                 $('#change_lus').removeAttr('disabled');
 		$('#change_opinion').removeAttr('disabled');
             }
@@ -795,6 +797,7 @@ function frameClick(clicked_id) {
                 $('#assign_role').attr('disabled', "True");
                 $('#add_preference').attr('disabled', "True");
                 $('#delete').attr('disabled', "True");
+		$('#multi_lus').attr('disabled', "True");
                 $('#change_lus').attr('disabled', "True");
 		$('#change_opinion').attr('disabled', "True");
             } else {
@@ -812,6 +815,7 @@ function frameClick(clicked_id) {
                 $('#assign_role').removeAttr('disabled');
                 $('#add_preference').removeAttr('disabled');
                 $('#delete').removeAttr('disabled');
+		$('#multi_lus').removeAttr('disabled');
                 $('#change_lus').removeAttr('disabled');
 		$('#change_opinion').removeAttr('disabled');
             }
diff --git a/semantics/templates/semantics.html b/semantics/templates/semantics.html
index d08fd2b..cbdcf8c 100644
--- a/semantics/templates/semantics.html
+++ b/semantics/templates/semantics.html
@@ -99,6 +99,8 @@
 		    <button type="button" onclick="createFrame()" id="create_frame">Nowa rama</button>
     		<button type="button" onclick="removeFromFrame()" id="delete" disabled="True">Usuń</button>
     		<br/>
+    		<button type="button" onclick="changeLexicalUnits()" id="multi_lus" disabled="True">Jednostki wielowyrazowe</button>
+                <br/>
     		<button type="button" onclick="changeLexicalUnits()" id="change_lus" disabled="True">Zmień jednostki</button>
     		<button type="button" onclick="changeOpinion()" id="change_opinion" disabled="True">Ustaw ocenę</button>
     		<br/>
diff --git a/semantics/views.py b/semantics/views.py
index 69eca1f..e3b578e 100644
--- a/semantics/views.py
+++ b/semantics/views.py
@@ -3,7 +3,9 @@
 from semantics.models import SemanticRole, SemanticFrame, Complement, \
                              LexicalUnit, FrameRankings, SemanticRolesDisplay, \
                              LexicalUnitExamples, SelectivePreferenceRelations, \
-                             GeneralSelectivePreference, FrameOpinion
+                             GeneralSelectivePreference, FrameOpinion, Synset
+
+from wordnet.models import Hypernymy, Synonymy
 
 from dictionary.models import Frame_Char_Model, Lemma, Lemma_Status, \
                               sort_arguments, sort_positions
@@ -72,7 +74,8 @@ def reorder_history(frames_list):
 def ajax_frames(request, lemma_id):
 
     lemma = Lemma.objects.get(id=lemma_id, old=False)
-    lexical_units = LexicalUnit.objects.filter(Q(base__startswith=lemma.entry + u' ')|Q(base__contains=u' '+lemma.entry+u' ')|Q(base__endswith=u' '+lemma.entry)|Q(base=lemma.entry)).order_by('sense')
+    lexical_units = LexicalUnit.objects.filter(Q(base=lemma.entry, pos="czasownik")|Q(base=lemma.entry+u' się', pos="czasownik")).order_by('sense')
+#    lexical_units = LexicalUnit.objects.filter(Q(base__startswith=lemma.entry + u' ')|Q(base__contains=u' '+lemma.entry+u' ')|Q(base__endswith=u' '+lemma.entry)|Q(base=lemma.entry)).order_by('sense')
     
     alternations = {}        
     frames_dict = {}
@@ -205,16 +208,29 @@ def ajax_frames(request, lemma_id):
 @ajax(method='get', encode_result=False)   
 def ajax_units(request, lemma_id):
     lemma = Lemma.objects.get(id=lemma_id, old=False)
-#    lexical_units = LexicalUnit.objects.filter(Q(base = lemma.entry, pos="czasownik")|Q(base = lemma.entry + u' się', pos="czasownik")).order_by('base', 'sense')
-    lexical_units = LexicalUnit.objects.filter(Q(base__startswith=lemma.entry + u' ', pos="czasownik")|Q(base__contains=u' '+lemma.entry+u' ', pos="czasownik")|Q(base__endswith=u' '+lemma.entry, pos="czasownik")|Q(base=lemma.entry, pos="czasownik")).order_by('base', 'sense')
+    lexical_units = LexicalUnit.objects.filter(Q(base = lemma.entry, pos="czasownik")|Q(base = lemma.entry + u' się', pos="czasownik")).order_by('base', 'sense')
+#    lexical_units = LexicalUnit.objects.filter(Q(base__startswith=lemma.entry + u' ', pos="czasownik")|Q(base__contains=u' '+lemma.entry+u' ', pos="czasownik")|Q(base__endswith=u' '+lemma.entry, pos="czasownik")|Q(base=lemma.entry, pos="czasownik")).order_by('base', 'sense')
 
     context = {
-               'lexical_units': [{"id": lu.id, "luid": lu.luid, "base": lu.base, "sense": lu.sense, "pos": lu.pos, "glossa": lu.glossa, "definition": lu.definition} for lu in lexical_units],
+               'lexical_units': [{"id": lu.id, "luid": lu.luid, "base": lu.base, "sense": lu.sense, "pos": lu.pos, "glossa": lu.glossa, "definition": lu.definition, "location": location(lu)} for lu in lexical_units],
                'informations': {'base': lemma.entry, 'sense': max(['A'] + [chr(ord(lu.sense) + 1) for lu in lexical_units.filter(luid=-1)])}, # TODO: 2 different free senses for with/whthout 'się'
               }
 
     return context
 
+def location(lexical_unit):
+    if lexical_unit.synset is None:
+        return ""
+    if lexical_unit.luid >= 0:
+        return ""
+    where = Synonymy.objects.filter(parent=lexical_unit.synset)
+    if len(where) > 0:
+        return "synonim " + unicode(where[0].child)
+    where = Hypernymy.objects.filter(parent=lexical_unit.synset)
+    if len(where) > 0:
+        return "hiponim " + unicode(where[0].child)
+    return "nieznana lokacja w Słowosieci"
+
 @ajax(method='get')   
 def ajax_predefined_preferences(request):
     predefined = []
--
libgit2 0.22.2