diff --git a/entries/static/entries/js/components/Entries.js b/entries/static/entries/js/components/Entries.js index b10f3fa714f9050b3549e5aca77876cf9d060f61..27ef80b26788ccf636c8063e2ce4ffbc67b03f07 100644 --- a/entries/static/entries/js/components/Entries.js +++ b/entries/static/entries/js/components/Entries.js @@ -9,6 +9,7 @@ export default { unifiedFrameId: null, isEdit: false, gettext: window.gettext, + unificationEntriesListRefreshKey: 1 }; }, components: {UnificationEntriesList, UnificationRightPane}, @@ -21,6 +22,9 @@ export default { unifiedFrameSelected (unifiedFrameId) { this.unifiedFrameId = unifiedFrameId; this.isEdit = true; + }, + refreshEntriesList() { + this.unificationEntriesListRefreshKey++; } }, mounted () { @@ -43,7 +47,7 @@ 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 @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"> @@ -53,7 +57,8 @@ export default { :entryId="entryId" :lexicalUnitId="lexicalUnitId" :initialUnifiedFrameId="unifiedFrameId" - :initialIsEdit="isEdit" /> + :initialIsEdit="isEdit" + @refresh-entries-list="refreshEntriesList" /> </div> <div class="col w-100 p-0 tab-pane overflow-auto" id="examples"> <table id="semantics-examples" class="table table-sm table-hover"> diff --git a/entries/static/entries/js/components/LexicalUnitDisplay.js b/entries/static/entries/js/components/LexicalUnitDisplay.js index fe96091aea7f2d306eb04820ef68a4b0b789c4ff..f1b37ae961460fe7f2cc2472728627952e956c3b 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'], + emits: ['refresh', "refreshEntriesList"], methods: { goToEdit (unifiedFrameId, entryId, lexicalUnitId) { window.location = `/${lang}/entries/unification?unified_frame_id=${unifiedFrameId}&entry_id=${entryId}&lexical_unit_id=${lexicalUnitId}`; @@ -20,7 +20,7 @@ export default { url: `/${lang}/semantics/frame_mark_as_invalid/${this.frame.id}/`, dataType: 'json', timeout: 60000, - }).then(() => { this.$emit('refresh'); }); + }).then(() => { this.setup(); this.$emit('refreshEntriesList'); }); }, take () { $.ajax({ @@ -43,7 +43,7 @@ export default { url: `/${lang}/semantics/frame_confirm_invalid/${this.frame.id}/`, dataType: 'json', timeout: 60000, - }).then(() => { this.$emit('refresh'); }); + }).then(() => { this.setup(); this.$emit('refreshEntriesList'); }); }, rejectInvalid () { $.ajax({ @@ -51,7 +51,7 @@ export default { url: `/${lang}/semantics/frame_reject_invalid/${this.frame.id}/`, dataType: 'json', timeout: 60000, - }).then(() => { this.$emit('refresh'); }); + }).then(() => { this.setup(); this.$emit('refreshEntriesList'); }); }, isReadyToProcess () { return (!this.isLeksykograf() && this.unifiedFrame?.status === 'G') || (this.isLeksykograf() && this.frame?.status === 'O'); diff --git a/entries/static/entries/js/components/UnificationEntriesList.js b/entries/static/entries/js/components/UnificationEntriesList.js index 598ceca812d5ce9d693b0eda52db91d6fc5451a3..39a91fa3522405b7ae648231dad6aa2b4ae21801 100644 --- a/entries/static/entries/js/components/UnificationEntriesList.js +++ b/entries/static/entries/js/components/UnificationEntriesList.js @@ -1,4 +1,18 @@ export default { + props: { + initialLexicalUnitId: Number, + initialEntryId: Number, + unificationEntriesListRefreshKey: Number, + }, + watch: { + unificationEntriesListRefreshKey() { + setup_entries_list({ + table: this.$refs.table1, + lexicalUnitSelected: (entryId, lexicalUnitId) => { this.$emit('lexicalUnitSelected', entryId, lexicalUnitId); }, + selectEntryId: this.initialEntryId + }); + } + }, data () { return { gettext: window.gettext, @@ -9,7 +23,8 @@ export default { mounted () { setup_entries_list({ table: this.$refs.table, - lexicalUnitSelected: (entryId, lexicalUnitId) => { this.$emit('lexicalUnitSelected', entryId, lexicalUnitId); } + lexicalUnitSelected: (entryId, lexicalUnitId) => { this.$emit('lexicalUnitSelected', entryId, lexicalUnitId); }, + selectEntryId: this.initialEntryId }); }, template: ` diff --git a/entries/static/entries/js/components/UnificationRightPane.js b/entries/static/entries/js/components/UnificationRightPane.js index 6640ec3176d6672c8f37a2fd1be9fa34fb5273dc..30ea24bfefd74ba2d5579e79486b8db91dea34c8 100644 --- a/entries/static/entries/js/components/UnificationRightPane.js +++ b/entries/static/entries/js/components/UnificationRightPane.js @@ -9,6 +9,7 @@ export default { initialUnifiedFrameId: Number, initialIsEdit: false, }, + emits: ['refreshEntriesList'], data () { return this.getInitialData(); }, @@ -34,6 +35,9 @@ export default { this.previewedUnifiedFrameId = this.unifiedFrameId; this.unifiedFrameId = previewedUnifiedFrameId; this.refresh(); + }, + refreshEntriesList() { + this.$emit('refreshEntriesList'); } }, watch: { @@ -55,6 +59,7 @@ export default { :entryId="entryIdLocal" :lexicalUnitId="key" @refresh="refresh" + @refresh-entries-list="refreshEntriesList" /> <lexical-unit-edit v-if="unifiedFrameId && isEdit" diff --git a/entries/static/entries/js/unification_entries_list.js b/entries/static/entries/js/unification_entries_list.js index 72525ff922a489e3b49f16df5b6c304b1b59a7f5..4eda25e50b198138c50742debbde727f662f755e 100644 --- a/entries/static/entries/js/unification_entries_list.js +++ b/entries/static/entries/js/unification_entries_list.js @@ -18,7 +18,8 @@ function setup_entries_list(options) { { data: 'POS' }, { render: data => (data && data.lexical_units && data.lexical_units.some(lu => lu.assignee_username !== null)) ? gettext("nie") : gettext("tak") }, can_see_assignees ? { data: 'assignee_username' } : { render: is_assigned_to_user_renderer }, - ] + ], + selectEntryId: options.selectEntryId, }); datatable.on('click', 'tr.entry', function () { var row = datatable.row(this);