From af98c8d016b9f0f0f14b4687e2503a758a4bae3b Mon Sep 17 00:00:00 2001 From: dcz <dcz@ipipan.waw.pl> Date: Tue, 5 Jul 2022 14:33:44 +0200 Subject: [PATCH] Refresh entries list on status change --- entries/static/entries/js/components/Entries.js | 6 +++++- .../entries/js/components/LexicalUnitDisplay.js | 2 +- .../entries/js/components/LexicalUnitEdit.js | 9 +++++++-- .../js/components/UnificationComponent.js | 6 ++++++ .../UnificationEntriesForFramesList.js | 12 ++++++++++++ .../js/components/UnificationRightPane.js | 1 + .../js/components/UnificationSwitchableList.js | 17 +++++++++++++---- 7 files changed, 45 insertions(+), 8 deletions(-) diff --git a/entries/static/entries/js/components/Entries.js b/entries/static/entries/js/components/Entries.js index 27ef80b..336a0e4 100644 --- a/entries/static/entries/js/components/Entries.js +++ b/entries/static/entries/js/components/Entries.js @@ -47,7 +47,11 @@ export default { template: ` <div id="entries-list" class="col h-100 w-100 px-0"> <div id="entries-list-div" class="col p-0 h-100 w-100 overflow-auto"> - <unification-entries-list :unificationEntriesListRefreshKey="unificationEntriesListRefreshKey" :initialLexicalUnitId="lexicalUnitId" :initialEntryId="entryId" @lexical-unit-selected="lexicalUnitSelected" /> + <unification-entries-list + :unificationEntriesListRefreshKey="unificationEntriesListRefreshKey" + :initialLexicalUnitId="lexicalUnitId" + :initialEntryId="entryId" + @lexical-unit-selected="lexicalUnitSelected" /> </div> </div> <div id="entry-display" class="col h-100 p-0"> diff --git a/entries/static/entries/js/components/LexicalUnitDisplay.js b/entries/static/entries/js/components/LexicalUnitDisplay.js index f1b37ae..f64ba1a 100644 --- a/entries/static/entries/js/components/LexicalUnitDisplay.js +++ b/entries/static/entries/js/components/LexicalUnitDisplay.js @@ -9,7 +9,7 @@ export default { data() { return { frame: null, unifiedFrame: undefined, gettext: window.gettext, hasPermission: window.has_permission } }, - emits: ['refresh', "refreshEntriesList"], + emits: ['refresh', 'refreshEntriesList'], methods: { goToEdit (unifiedFrameId, entryId, lexicalUnitId) { window.location = `/${lang}/entries/unification?unified_frame_id=${unifiedFrameId}&entry_id=${entryId}&lexical_unit_id=${lexicalUnitId}`; diff --git a/entries/static/entries/js/components/LexicalUnitEdit.js b/entries/static/entries/js/components/LexicalUnitEdit.js index 16a3642..cc4ad98 100644 --- a/entries/static/entries/js/components/LexicalUnitEdit.js +++ b/entries/static/entries/js/components/LexicalUnitEdit.js @@ -16,13 +16,16 @@ const FramePreview = { }; }, components: {LexicalUnitEdit, UnificationSwitchableList}, - emits: ['changeFrame', 'changePreviewToEdit'], + emits: ['changeFrame', 'changePreviewToEdit', 'refreshEntriesList'], methods: { changePreviewToEditLocal (unifiedFrameId) { this.$emit('changePreviewToEdit', unifiedFrameId); }, unifiedFrameSelected (unifiedFrameId) { this.$emit('changeFrame', unifiedFrameId); + }, + refreshEntriesList() { + this.$emit('refreshEntriesList') } }, mounted () { @@ -46,6 +49,7 @@ const FramePreview = { :unifiedFrameId="unifiedFrameId" :forceRefresh="forceRefresh" @change-preview-to-edit="changePreviewToEditLocal" + @refresh-entries-list="refreshEntriesList" /> <div v-else class="h-100"> Brak ramy do wyświetlenia @@ -93,7 +97,7 @@ Object.assign(LexicalUnitEdit, { } }, components: {InfoTooltip, Spinner, FramePreview}, - emits: ['goToDisplay', 'refresh', 'swapFrames', 'changePreviewToEdit'], + emits: ['goToDisplay', 'refresh', 'swapFrames', 'changePreviewToEdit', 'refreshEntriesList'], watch: { forceRefresh(newVal, oldVal) { this.loadFrame(); @@ -666,6 +670,7 @@ Object.assign(LexicalUnitEdit, { timeout: 60000, success: function (response) { show_info('Status ramy został zmieniony'); + this.$emit('refreshEntriesList'); this.loadFrame(); }.bind(this), error: function (request, errorType, errorMessage) { diff --git a/entries/static/entries/js/components/UnificationComponent.js b/entries/static/entries/js/components/UnificationComponent.js index 29f9c79..2915477 100644 --- a/entries/static/entries/js/components/UnificationComponent.js +++ b/entries/static/entries/js/components/UnificationComponent.js @@ -9,6 +9,7 @@ export default { unifiedFrameId: null, isEdit: false, gettext: window.gettext, + unificationEntriesListRefreshKey: 1, }; }, components: {UnificationSwitchableList, UnificationRightPane}, @@ -22,6 +23,9 @@ export default { this.isEdit = true; this.unifiedFrameId = unifiedFrameId; }, + refreshEntriesList() { + this.unificationEntriesListRefreshKey++; + } }, setup() { const lexicalUnit = new URL(location.href).searchParams.get('lexical_unit_id'); @@ -50,6 +54,7 @@ export default { <div id="entries-list" class="col h-100 w-100 px-0"> <div id="entries-list-div" class="col p-0 h-100 w-100 overflow-auto"> <unification-switchable-list + :unificationEntriesListRefreshKey="unificationEntriesListRefreshKey" :initialLexicalUnitId="initialLexicalUnitId" :initialEntryId="initialEntryId" @lexical-unit-selected="lexicalUnitSelected" @@ -63,6 +68,7 @@ export default { :lexicalUnitId="lexicalUnitId" :initialUnifiedFrameId="unifiedFrameId" :initialIsEdit="isEdit" + @refresh-entries-list="refreshEntriesList" /> </div> ` diff --git a/entries/static/entries/js/components/UnificationEntriesForFramesList.js b/entries/static/entries/js/components/UnificationEntriesForFramesList.js index ccf5cfd..9b062f0 100644 --- a/entries/static/entries/js/components/UnificationEntriesForFramesList.js +++ b/entries/static/entries/js/components/UnificationEntriesForFramesList.js @@ -2,6 +2,7 @@ export default { props: { initialLexicalUnitId: Number, initialEntryId: Number, + unificationEntriesListRefreshKey: Number, }, data () { return { @@ -9,6 +10,17 @@ export default { canViewAssignment: has_permission("users.view_assignment") } }, + watch: { + unificationEntriesListRefreshKey() { + // TODO: reload data and click in selected row + // this.datatableObject.ajax.reload(); + setup_entries_for_frames_list({ + table: this.$refs.table, + lexicalUnitSelected: (lexicalUnitUnifiedFrameId) => { this.$emit('unifiedFrameSelected', lexicalUnitUnifiedFrameId); }, + selectEntryId: this.initialEntryId + }); + } + }, emits: ['unifiedFrameSelected'], mounted () { setup_entries_for_frames_list({ diff --git a/entries/static/entries/js/components/UnificationRightPane.js b/entries/static/entries/js/components/UnificationRightPane.js index 30ea24b..8982f5d 100644 --- a/entries/static/entries/js/components/UnificationRightPane.js +++ b/entries/static/entries/js/components/UnificationRightPane.js @@ -70,6 +70,7 @@ export default { :initialRightPaneTab="unifiedFrameId !== previewedUnifiedFrameId ? 'frame_preview' : null" @go-to-display="goToDisplay" @swap-frames="swapFrames" + @refresh-entries-list="refreshEntriesList" /> </div> ` diff --git a/entries/static/entries/js/components/UnificationSwitchableList.js b/entries/static/entries/js/components/UnificationSwitchableList.js index fdffc95..170daf2 100644 --- a/entries/static/entries/js/components/UnificationSwitchableList.js +++ b/entries/static/entries/js/components/UnificationSwitchableList.js @@ -6,6 +6,7 @@ export default { props: { initialLexicalUnitId: Number, initialEntryId: Number, + unificationEntriesListRefreshKey: Number, }, data () { return { @@ -13,19 +14,27 @@ export default { isFrameView: false } }, - emits: ['lexicalUnitSelected', 'unifiedFrameSelected'], + emits: ['lexicalUnitSelected', 'unifiedFrameSelected', 'refreshEntriesList'], methods: { lexicalUnitSelected (entryId, lexicalUnitId) { this.$emit('lexicalUnitSelected', entryId, lexicalUnitId); }, unifiedFrameSelected (unifiedFrameId) { this.$emit('unifiedFrameSelected', unifiedFrameId); - } + }, }, components: {UnificationEntriesList, UnificationEntriesForFramesList, UnificationFramesList}, template: ` <label class="float-left mt-2"><input type="checkbox" v-model="isFrameView" /> {{ gettext('RAMY') }}</label> - <div v-if="!isFrameView"><unification-entries-for-frames-list :initialLexicalUnitId="initialLexicalUnitId" :initialEntryId="initialEntryId" @unified-frame-selected="unifiedFrameSelected" /></div> - <div v-else><unification-frames-list @unified-frame-selected="unifiedFrameSelected" /></div> + <div v-if="!isFrameView"><unification-entries-for-frames-list + :unificationEntriesListRefreshKey="unificationEntriesListRefreshKey" + :initialLexicalUnitId="initialLexicalUnitId" + :initialEntryId="initialEntryId" + @unified-frame-selected="unifiedFrameSelected" + /></div> + <div v-else><unification-frames-list + :unificationEntriesListRefreshKey="unificationEntriesListRefreshKey" + @unified-frame-selected="unifiedFrameSelected" + /></div> ` }; -- GitLab