From dc4716debb80e874d20c2cd72d82a03c073a375d Mon Sep 17 00:00:00 2001 From: dcz <dcz@ipipan.waw.pl> Date: Wed, 29 Jun 2022 08:23:16 +0200 Subject: [PATCH] Refresh preview window on slowal frame extracting --- .../entries/js/components/LexicalUnitEdit.js | 62 +++++++++++++------ unifier/models.py | 10 +-- 2 files changed, 47 insertions(+), 25 deletions(-) diff --git a/entries/static/entries/js/components/LexicalUnitEdit.js b/entries/static/entries/js/components/LexicalUnitEdit.js index 6d9831c..122a2e0 100644 --- a/entries/static/entries/js/components/LexicalUnitEdit.js +++ b/entries/static/entries/js/components/LexicalUnitEdit.js @@ -5,7 +5,8 @@ let LexicalUnitEdit = {}; const FramePreview = { props: { - initialUnifiedFrameId: Number + initialUnifiedFrameId: Number, + forceRefresh: Number }, data () { return { @@ -33,6 +34,7 @@ const FramePreview = { v-if="unifiedFrameId !== -1" :readOnly="true" :unifiedFrameId="unifiedFrameId" + :forceRefresh="forceRefresh" /> <div v-else class="h-100"> Brak ramy do wyświetlenia @@ -52,6 +54,7 @@ Object.assign(LexicalUnitEdit, { previewedUnifiedFrameId: Number, readOnly: Boolean, initialRightPaneTab: String, + forceRefresh: Number, }, data() { return { @@ -71,10 +74,17 @@ Object.assign(LexicalUnitEdit, { ], right_pane_tab: this.initialRightPaneTab || 'schemata', currentPreviewedUnifiedFrameId: this.previewedUnifiedFrameId, + internalForceRefresh: this.forceRefresh, } }, components: {InfoTooltip, Spinner, FramePreview}, emits: ['goToDisplay', 'refresh', 'swapFrames'], + watch: { + forceRefresh(newVal, oldVal) { + console.log("forceRefresh exec") + this.loadFrame(); + } + }, methods: { hasWhiteSpace(s) { return /\s/g.test(s); @@ -567,6 +577,8 @@ Object.assign(LexicalUnitEdit, { success : function(response) { show_info('Ramy zostały wydzielone do nowej ramy zunifikowanej.'); this.loadFrame(); + let newUnifiedFrameId = response.unified_frame_id; + this.currentPreviewedUnifiedFrameId = newUnifiedFrameId; $.prompt.close(); }.bind(this), error: function(request, errorType, errorMessage) { @@ -580,23 +592,29 @@ Object.assign(LexicalUnitEdit, { } $.prompt(extract_frames_to_new_frame_popup); }, - extract_frames_to_frame(target_unified_frame_id) { - var data = { 'unified_frame_id' : this.unified_frame.id, 'slowal_frame_ids' : JSON.stringify([this.active_slowal_frame.id]), - 'target_unified_frame_id': target_unified_frame_id }; - $.ajax({ - type : 'post', - url : '/' + lang + '/unifier/extract_frames_to_new_frame/', - dataType : 'json', - data : data, - timeout : 60000, - success : function(response) { - show_info('Zaznaczona rama została przeniosiona.'); - this.loadFrame(); - }, - error: function(request, errorType, errorMessage) { - show_error(errorType + ' (' + errorMessage + ')'); - } - }); + extract_frame_to_preview_frame() { + if(this.currentPreviewedUnifiedFrameId !== -1 && this.currentPreviewedUnifiedFrameId !== this.unified_frame.id) { + let target_unified_frame_id = this.currentPreviewedUnifiedFrameId; + var data = { + 'unified_frame_id': this.unified_frame.id, 'slowal_frame_ids': JSON.stringify([this.active_slowal_frame.id]), + 'target_unified_frame_id': target_unified_frame_id + }; + $.ajax({ + type: 'post', + url: '/' + lang + '/unifier/extract_frames_to_new_frame/', + dataType: 'json', + data: data, + timeout: 60000, + success: function (response) { + show_info('Zaznaczona rama została przeniosiona.'); + this.loadFrame(); + this.internalForceRefresh += 1; + }.bind(this), + error: function (request, errorType, errorMessage) { + show_error(errorType + ' (' + errorMessage + ')'); + } + }); + } }, changePreviewedUnifiedFrameId (unifiedFrameId) { this.currentPreviewedUnifiedFrameId = unifiedFrameId; @@ -738,7 +756,7 @@ Object.assign(LexicalUnitEdit, { Niepasująca </td> <td id="move-slowal-frame" style="padding: 10px 15px 10px 15px; color: #000000;" - @click="extract_frames_to_frame(1)"> + @click="extract_frame_to_preview_frame()"> Przerzuć </td> <td id="show-slowal-frame" style="padding: 10px 15px 10px 15px; color: #000000;"> @@ -797,7 +815,11 @@ Object.assign(LexicalUnitEdit, { </ul> <div :class="right_pane_tab !== 'schemata' && 'd-none'" id="semantics-schemata"></div> <div v-if="right_pane_tab === 'frame_preview'"> - <frame-preview :key="currentPreviewedUnifiedFrameId" :initialUnifiedFrameId="currentPreviewedUnifiedFrameId" @change-frame="changePreviewedUnifiedFrameId" /> + <frame-preview + :key="currentPreviewedUnifiedFrameId" + :initialUnifiedFrameId="currentPreviewedUnifiedFrameId" + @change-frame="changePreviewedUnifiedFrameId" + :forceRefresh="internalForceRefresh" /> </div> <div v-if="right_pane_tab === 'notes'">notateczki</div> </div> diff --git a/unifier/models.py b/unifier/models.py index 7890f77..d617f6e 100644 --- a/unifier/models.py +++ b/unifier/models.py @@ -67,11 +67,11 @@ class UnifiedFrame(models.Model): argument_mapping.unified_agrument_id = new_unified_frame_arguments[i] argument_mapping.save() - curr_mapping = UnifiedFrame2SlowalFrameMapping.objects.filter(unified_frame=self).all() - if len(curr_mapping) == 0: - unified_frame_arguments = UnifiedFrameArgument.objects.filter(unified_frame=self).all() - unified_frame_arguments.delete() - self.delete() + # curr_mapping = UnifiedFrame2SlowalFrameMapping.objects.filter(unified_frame=self).all() + # if len(curr_mapping) == 0: + # unified_frame_arguments = UnifiedFrameArgument.objects.filter(unified_frame=self).all() + # unified_frame_arguments.delete() + # self.delete() return new_frame -- GitLab