diff --git a/entries/static/entries/js/components/LexicalUnitEdit.js b/entries/static/entries/js/components/LexicalUnitEdit.js index fd19ca0d65e0a12bd6d186b9f4200c03afc42d1a..f98b7924ce27b9c03d25954b07cd62088d60f3e2 100644 --- a/entries/static/entries/js/components/LexicalUnitEdit.js +++ b/entries/static/entries/js/components/LexicalUnitEdit.js @@ -26,7 +26,7 @@ const FramePreview = { }, refreshEntriesList() { this.$emit('refreshEntriesList') - } + }, }, mounted () { Split(['#frame-preview-left-pane', '#frame-preview-right-pane'], { @@ -104,7 +104,7 @@ Object.assign(LexicalUnitEdit, { } }, components: {InfoTooltip, Spinner, FramePreview, SlowalFrameComponent, ExamplesComponent, SemanticsSchemataComponent}, - emits: ['goToDisplay', 'refresh', 'swapFrames', 'refreshEntriesList'], + emits: ['goToDisplay', 'refresh', 'swapFrames', 'refreshEntriesList', 'clearUnifiedFrameView'], watch: { forceRefresh(newVal, oldVal) { this.loadFrame(); @@ -647,7 +647,6 @@ Object.assign(LexicalUnitEdit, { show_info('Status ramy został zmieniony'); this.$emit('refreshEntriesList'); this.loadFrame(); - // this.slowalFrameSelected(this.active_slowal_frame.id); }.bind(this), error: function (request, errorType, errorMessage) { show_error(errorType + ' (' + errorMessage + ')'); @@ -789,6 +788,7 @@ Object.assign(LexicalUnitEdit, { timeout: 60000, success: function (response) { show_info('Zaznaczona rama została przeniosiona.'); + this.active_slowal_frame = null; this.loadFrame(); this.internalForceRefresh += 1; }.bind(this), @@ -819,6 +819,23 @@ Object.assign(LexicalUnitEdit, { schemataSelected(schemas) { this.selectedSchemas = schemas; }, + deleteUnifiedFrames() { + if (!confirm(gettext("Czy na pewno chcesz zunifikowaną ramę?"))) return false; + $.ajax({ + type: 'post', + url: '/' + lang + `/unifier/delete_unified_frame/${this.unified_frame.id}/`, + dataType: 'json', + timeout: 60000, + success: function (response) { + show_info('Zunifikowana rama została usunięta.'); + this.$emit('refreshEntriesList'); + this.$emit("swapFrames", null); + }.bind(this), + error: function (request, errorType, errorMessage) { + show_error(errorType + ' (' + errorMessage + ')'); + } + }); + }, }, mounted() { this.changeStatusButtonTitleToDefault(); @@ -868,6 +885,7 @@ Object.assign(LexicalUnitEdit, { <td id="remove-arg" @click="removeArgument" style="padding: 10px 15px 10px 15px; color: #000000;">Usuń argum.</td> <td id="change-windows" style="padding: 10px 15px 10px 15px; color: #000000;" @click="removeSelectionalPreference">Usuń prefer.</td> <td id="change-windows" style="padding: 10px 15px 10px 15px; color: #000000;" @click="swapUnifiedFrames">Zamień okna</td> + <td v-if="frames.length == 0" id="change-windows" style="padding: 10px 15px 10px 15px; color: #000000;" @click="deleteUnifiedFrames">Usuń</td> </tr> </table> <spinner /> @@ -883,9 +901,9 @@ Object.assign(LexicalUnitEdit, { <td class="argument py-2 px-1 border-top border-left border-secondary role-column" :class="getArgumentCSS(argument)" - @click="unifiedFrameArgumentSelected(argument)" - @mouseover="unifiedFrameArgumentHovered(argument)" - @mouseleave="unifiedFrameArgumentHovered(null)" + @click="unifiedFrameArgumentSelected(argument)" + @mouseover="unifiedFrameArgumentHovered(argument)" + @mouseleave="unifiedFrameArgumentHovered(null)" > {{ argument.role_type }} @@ -976,11 +994,8 @@ Object.assign(LexicalUnitEdit, { <td id="show-slowal-frame" style="padding: 10px 15px 10px 15px; color: #000000;" @click="changeShowVerifiedFrames(true)"> Pokaż wszystkie </td> - <td id="reollback-slowal-frame" style="padding: 10px 15px 10px 15px; color: #000000;"> - Przywróć - </td> <td id="move-slowal-frame" style="padding: 10px 15px 10px 15px; color: #000000;" - @click="extract_frame_to_preview_frame()"> + @click="extract_frame_to_preview_frame"> Przerzuć </td> </tr> diff --git a/entries/static/entries/js/components/UnificationFramesList.js b/entries/static/entries/js/components/UnificationFramesList.js index 693e30c3cdf7ce633d3b8c20f5925d717f7841c3..e0059fd381a251b66a670e0b1a3066ddddf2a775 100644 --- a/entries/static/entries/js/components/UnificationFramesList.js +++ b/entries/static/entries/js/components/UnificationFramesList.js @@ -1,15 +1,31 @@ export default { + props: { + initialUnifiedFrameId: Number, + unificationEntriesListRefreshKey: Number, + }, data () { return { gettext: window.gettext, canViewAssignment: has_permission("users.view_assignment") } }, + watch: { + unificationEntriesListRefreshKey() { + // TODO: reload data and click in selected row + // this.datatableObject.ajax.reload(); + setup_frames_list({ + table: this.$refs.table, + unifiedFrameSelected: (unifiedFrameId) => { this.$emit('unifiedFrameSelected', unifiedFrameId); }, + selectEntryId: this.initialEntryId, + }); + } + }, emits: ['unifiedFrameSelected'], mounted () { setup_frames_list({ table: this.$refs.table, - unifiedFrameSelected: (unifiedFrameId) => { this.$emit('unifiedFrameSelected', unifiedFrameId); } + unifiedFrameSelected: (unifiedFrameId) => { this.$emit('unifiedFrameSelected', unifiedFrameId); }, + selectEntryId: this.initialUnifiedFrameId, }); }, template: ` diff --git a/unifier/urls.py b/unifier/urls.py index 6fd291e5b29e7f5fe83b7c19b282d5141b5b99db..5ae8ec00de3d6c7e75e1e85a258fbd9e92f5cf2f 100644 --- a/unifier/urls.py +++ b/unifier/urls.py @@ -23,5 +23,6 @@ urlpatterns = [ path('remove_selectional_preference/', views.remove_selectional_preference, name='remove_selectional_preference'), path('build_unified_frame_xml/', views.build_unified_frame_xml, name='build_unified_frame_xml'), path('frame_assign/<int:lu_id>/', views.frame_assign, name='frame_assign'), + path('delete_unified_frame/<int:unified_frame_id>/', views.delete_unified_frame, name='delete_unified_frame'), ] diff --git a/unifier/views.py b/unifier/views.py index 119cac2c73c8c73f689153465e8d274c0a421355..45d7b4d1e9cdae5746fc1dc56f21cabadd343f97 100644 --- a/unifier/views.py +++ b/unifier/views.py @@ -475,3 +475,22 @@ def frame_assign(request, lu_id): } return JsonResponse(ret) + +def removeUnifiedFrameMappingsAndAssigments(unified_frame_id): + #odpianie z ramy zunifikowanej + unifiedFrame2SlowalFrameMappings = UnifiedFrame2SlowalFrameMapping.objects.filter(unified_frame_id=unified_frame_id) + for unifiedFrame2SlowalFrameMapping in unifiedFrame2SlowalFrameMappings: + unifiedFrameArgumentSlowalFrameMappings = UnifiedFrameArgumentSlowalFrameMapping.objects.filter(unified_frame_mapping=unifiedFrame2SlowalFrameMapping) + unifiedFrameArgumentSlowalFrameMappings.delete() + unifiedFrame2SlowalFrameMapping.delete() + Assignment.delete(subject_id=unified_frame_id) + +@ajax(login_required=True, method='post') +@transaction.atomic +def delete_unified_frame(request, unified_frame_id): + + removeUnifiedFrameMappingsAndAssigments(unified_frame_id) + UnifiedFrameArgument.objects.filter(unified_frame_id=unified_frame_id).delete() + UnifiedFrame.objects.get(id=unified_frame_id).delete() + + return {}