From 2c0d30115a46ab00297bec4b8fc754b5bcc52b98 Mon Sep 17 00:00:00 2001
From: dcz <dcz@ipipan.waw.pl>
Date: Wed, 30 Aug 2023 16:01:59 +0200
Subject: [PATCH] Accept unified frame verification when slowal frames have bad
 or contested status. Sorting unified frames by title. Sorting slowal frames
 by lexical units.

---
 .../unification/Unification/LexicalUnitEdit.vue    | 14 +-------------
 .../shared/frame-components/MeaningComponent.vue   |  3 ++-
 unifier/views.py                                   |  8 +++++++-
 3 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/frontend/src/components/unification/Unification/LexicalUnitEdit.vue b/frontend/src/components/unification/Unification/LexicalUnitEdit.vue
index cf9bba5..936b1ce 100644
--- a/frontend/src/components/unification/Unification/LexicalUnitEdit.vue
+++ b/frontend/src/components/unification/Unification/LexicalUnitEdit.vue
@@ -582,7 +582,7 @@ Object.assign(LexicalUnitEdit, {
         this.changeUnifiedFrameStatusToReadyOrVerifiedByPath('change_unified_frame_status_to_ready')
     },
     changeUnifiedFrameStatusToReadyOrVerifiedByPath(url_path) {
-      let foundNotVerifiedFrame = this.frames.find(frame => frame.status !== 'G' && frame.status !== 'S');
+      let foundNotVerifiedFrame = this.frames.find(frame => frame.status !== 'G' && frame.status !== 'S' && status != 'B' && status != 'C');
       if (foundNotVerifiedFrame) {
         alert(gettext("Wszystkie podpięte ramy powinny być zweryfikowane."));
       } else {
@@ -1223,18 +1223,6 @@ export default LexicalUnitEdit;
               :key="examples"
               @example-selected="exampleSelected"
           />
-<!--            <table id="semantics-examples" class="table table-sm table-hover">-->
-<!--                <thead>-->
-<!--                    <tr>-->
-<!--                        <th scope="col">{{ gettext("Przykład") }}<i id="examples-argument"></i><i id="examples-lu"></i><i id="examples-schema"></i></th>-->
-<!--                        <th scope="col">{{ gettext("Źródło") }}</th>-->
-<!--                        <th scope="col">{{ gettext("Opinia") }}</th>-->
-<!--                    </tr>-->
-<!--                </thead>-->
-<!--                <tbody id="semantics-examples-list">-->
-<!--                </tbody>-->
-<!--            </table>-->
-<!--            <p class="mx-1 my-1" id="semantics-no-examples">{{ gettext("Brak przykładów") }}</p>-->
         </div>
     </div>
     <div v-if="!readOnly" class="col h-100 px-1 pt-0 pb-0 overflow-auto" style="padding-left: 0px!important; padding-right: 0px!important;" id="semantics-schemata-pane">
diff --git a/frontend/src/components/unification/shared/frame-components/MeaningComponent.vue b/frontend/src/components/unification/shared/frame-components/MeaningComponent.vue
index 0576d02..be1bdf6 100644
--- a/frontend/src/components/unification/shared/frame-components/MeaningComponent.vue
+++ b/frontend/src/components/unification/shared/frame-components/MeaningComponent.vue
@@ -43,7 +43,8 @@ export default {
                 @mouseleave="lexicalUnit.hover=false"
                 @click.stop="select(lexicalUnit)"
                 :class="lexicalUnit.selected ? 'entry-meaning active' : lexicalUnit.hover ? 'entry-meaning active' : ''"
-                class="lexical-unit entry-meaning" style="padding-left: 4px; padding-right: 4px;">{{lexicalUnit.str}}</span>
+                class="lexical-unit entry-meaning" style="padding-left: 4px; padding-right: 4px;">{{lexicalUnit.str}}
+            </span>
             <info-tooltip v-if="getTooltipStr(lexicalUnit)" :text="getTooltipStr(lexicalUnit)"/>
             <a v-if="lexicalUnit.url" class="lu-plwn" style="padding-left: 4px;" :href="lexicalUnit.url" target="_blank">
                 <img :src="iconUrl" alt="external link" height="14">
diff --git a/unifier/views.py b/unifier/views.py
index ec155b7..1a5e2be 100644
--- a/unifier/views.py
+++ b/unifier/views.py
@@ -105,7 +105,7 @@ def get_unified_frames(request):
             forms = collect_forms(request.session['unified_frame_form'], errors_dict)
             unified_frames = get_filtered_objects(forms).filter()
         else:
-            unified_frames = UnifiedFrame.objects.all()
+            unified_frames = UnifiedFrame.objects.order_by('title').all()
 
         if scroller_params['filter']:
             unified_frames = unified_frames.filter(title__startswith=scroller_params['filter'])
@@ -234,6 +234,10 @@ def get_examples(frames):
     return sorted(examples, key=lambda x: x['sentence'])
 
 
+def to_lemma(lexical_units):
+    return ", ".join(map(lambda l: l['str'], lexical_units))
+
+
 def get_unified_frame_json(unified_frame, request):
     local_schema_filter_form = None
     local_frame_filter_form = None
@@ -261,6 +265,8 @@ def get_unified_frame_json(unified_frame, request):
         dict = frame2dict(slowal_frame, slowal_frame.lexical_units.all())
         slowal_frames_dict.append(dict)
 
+    slowal_frames_dict = sorted(slowal_frames_dict, key=lambda x: to_lemma(x['lexical_units']))
+
     alternations, realisation_phrases, realisation_descriptions = get_alternations(all_schema_objects, slowal_frames)
     examples = get_examples(slowal_frames)
 
-- 
GitLab