diff --git a/frontend/src/components/unification/Unification/LexicalUnitEdit.vue b/frontend/src/components/unification/Unification/LexicalUnitEdit.vue index 5c172a4456db2a44572afd1ef379b71d300b4f45..6b5f8f8ad010c1fff65b8983349a831d54e48f78 100644 --- a/frontend/src/components/unification/Unification/LexicalUnitEdit.vue +++ b/frontend/src/components/unification/Unification/LexicalUnitEdit.vue @@ -1027,7 +1027,7 @@ export default LexicalUnitEdit; <div v-else class="preference py-2 px-1 preference-bold">{{ preference.str }}</div> </li> </ul> - <ul class="ul-preference" v-if="unified_frame.status !== 'S'"> + <ul class="ul-preference" v-if="unified_frame.status !== 'S' && argument.preferences.length == 0"> <li v-for="preference in slowal_frames2selecional_preferencies_mapping[argument.id]"> <span v-if="preference.url != null" class="preference py-2 px-1"> <a class="synset-plwn" v-bind:href="preference.url" target="_blank">{{ preference.str }}</a> diff --git a/frontend/src/components/unification/shared/utils.js b/frontend/src/components/unification/shared/utils.js index c6ca4bcb082686f9e9a635ea81dd1b4eb2886d22..b3e21bac8a6901472c22758f8474d86458162f06 100644 --- a/frontend/src/components/unification/shared/utils.js +++ b/frontend/src/components/unification/shared/utils.js @@ -10,17 +10,25 @@ function slowal_frames2selecional_preferencies(unified_frame, slowal_frames) { let slowal_frame_argument = slowal_frame.arguments.find(o => o.argument_id === slowal_frame_argument_mapping.slowal_frame_agrument_id); let unified_frame_argument = unified_frame.arguments.find(o => o.id === slowal_frame_argument_mapping.unified_frame_agrument_id); - const unified_frame_argument_preferences = new Set(unified_frame_argument.preferences.map(preference => preference.str)); - let preferenceEntry = unified_argument_2_selecional_preferencies[slowal_frame_argument_mapping.unified_frame_agrument_id]; if (preferenceEntry == null) { preferenceEntry = []; unified_argument_2_selecional_preferencies[slowal_frame_argument_mapping.unified_frame_agrument_id] = preferenceEntry } + + const unified_frame_argument_preferences = new Set(preferenceEntry.map(preference => preference.str)); + preferenceEntry.push.apply(preferenceEntry, slowal_frame_argument.preferences.filter(preference => !unified_frame_argument_preferences.has(preference.str))) } } } + + for (const [key, value] of Object.entries(unified_argument_2_selecional_preferencies)) { + value.sort((a,b) => -a.type.localeCompare(b.type)); + } + + + return unified_argument_2_selecional_preferencies; } diff --git a/unifier/models.py b/unifier/models.py index ecabcb38741e31b6e99d8ea41669241901efe3f2..6a8cd87382711eb95bd69c6b4a5eb505e12b49d6 100644 --- a/unifier/models.py +++ b/unifier/models.py @@ -116,6 +116,9 @@ class UnifiedFrame(models.Model): role=unified_frame_argument.role, unified_frame=new_frame) new_unified_frame_argument.proposed_roles.set(unified_frame_argument.proposed_roles.all()) + new_unified_frame_argument.predefined.set(unified_frame_argument.predefined.all()) + new_unified_frame_argument.synsets.set(unified_frame_argument.synsets.all()) + new_unified_frame_argument.relations.set(unified_frame_argument.relations.all()) new_unified_frame_argument.save() return new_frame