From bcdf6ab9494c231d509d2e3ace4f29b90aa0da2e Mon Sep 17 00:00:00 2001 From: Mohamed Amine Krout Date: Thu, 14 Nov 2024 15:20:20 +0100 Subject: [PATCH] FIX: BUG - Move a parent note under its child note breaks the treeview - EXO-75215 Prior to this fix, when a user move a note that has children, he was able to select the children and move it below them. It creates an infinite loop This commit filter the move treeview to not display children of the current node so user will not be able to select any of them as destination. --- .../notes/components/NoteTreeviewDrawer.vue | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/notes-webapp/src/main/webapp/vue-app/notes/components/NoteTreeviewDrawer.vue b/notes-webapp/src/main/webapp/vue-app/notes/components/NoteTreeviewDrawer.vue index 04b1b54bcf..7833fd7a0e 100644 --- a/notes-webapp/src/main/webapp/vue-app/notes/components/NoteTreeviewDrawer.vue +++ b/notes-webapp/src/main/webapp/vue-app/notes/components/NoteTreeviewDrawer.vue @@ -619,15 +619,20 @@ export default { }); }, retrieveNoteTree(noteType, noteOwner, noteName) { + this.home = []; + this.items = []; + this.allItems = []; + this.allItemsHome = []; const withDrafts = this.filter === this.$t('notes.filter.label.drafts'); this.$notesService.getFullNoteTree(noteType, noteOwner , noteName, withDrafts, this.selectedTranslation).then(data => { if (data && data.jsonList.length) { - this.home = []; - this.items = []; - this.allItems = []; - this.allItemsHome = []; + const items = data.treeNodeData && data.treeNodeData[0] && data.treeNodeData[0] .children || []; + if (this.movePage) { + const home = { children: items , noteId: 0}; + this.filterItemsForMove(home); + } this.home = data.treeNodeData.length ? data.treeNodeData[0] : data.jsonList[0]; - this.items = data.treeNodeData && data.treeNodeData[0] && data.treeNodeData[0] .children || []; + this.items = items; this.allItems = data.jsonList; this.allItemsHome = data.treeNodeData; } @@ -640,6 +645,16 @@ export default { this.noteBookOwnerTree = noteOwner; }); }, + filterItemsForMove(item) { + if (item.noteId===this.note.id) { + delete item.children; + return item; + } + for (let i = 0; i < item.children.length; i++) { + item.children[i] = this.filterItemsForMove(item.children[i]); + } + return item; + }, getOpenedTreeViewItems(breadCrumbArray) { const activatedNotes = []; if (this.filter === this.$t('notes.filter.label.drafts')) {