From 3f92506ff96def45315a05ba5e3f541450971bc4 Mon Sep 17 00:00:00 2001 From: Sonia Zorba <sonia.zorba@inaf.it> Date: Fri, 9 Jul 2021 16:18:13 +0200 Subject: [PATCH] Confirm delete modal: added warning message when some of the selected nodes are not deletable --- vospace-ui-frontend/src/components/Main.vue | 15 +++++++++++---- .../src/components/modal/ConfirmDeleteModal.vue | 11 ++++++++++- vospace-ui-frontend/src/store.js | 4 ++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/vospace-ui-frontend/src/components/Main.vue b/vospace-ui-frontend/src/components/Main.vue index ac26e0a..dfc5f2c 100644 --- a/vospace-ui-frontend/src/components/Main.vue +++ b/vospace-ui-frontend/src/components/Main.vue @@ -117,12 +117,19 @@ export default { this.$store.dispatch('startAsyncRecallJob'); }, deleteNodes() { - let deletableCheckboxes = document.querySelectorAll('#nodes input.deletable:checked'); - let paths = []; - for (let i = 0; i < deletableCheckboxes.length; i++) { - paths.push(deletableCheckboxes[i].getAttribute('data-node')); + let selectedNodesCheckboxes = document.querySelectorAll('#nodes input:checked'); + let paths = [], unDeletablePaths = []; + for (let i = 0; i < selectedNodesCheckboxes.length; i++) { + let checkbox = selectedNodesCheckboxes[i]; + let dataNode = checkbox.getAttribute('data-node'); + if(checkbox.classList.contains('deletable')) { + paths.push(dataNode); + } else { + unDeletablePaths.push(dataNode); + } } this.$store.commit('setNodesToDelete', paths); + this.$store.commit('setSelectedUndeletableNodes', unDeletablePaths); this.$bvModal.show('confirm-delete-modal'); } } diff --git a/vospace-ui-frontend/src/components/modal/ConfirmDeleteModal.vue b/vospace-ui-frontend/src/components/modal/ConfirmDeleteModal.vue index b8e5a20..d96122e 100644 --- a/vospace-ui-frontend/src/components/modal/ConfirmDeleteModal.vue +++ b/vospace-ui-frontend/src/components/modal/ConfirmDeleteModal.vue @@ -11,6 +11,14 @@ <li v-for="node in nodesToDelete" :key="node">{{node}}</li> </ul> </p> + <div v-if="selectedUndeletableNodes.length > 0"> + <p><strong>Warning</strong>: following selected nodes can't be deleted and will be ignored:</p> + <p> + <ul> + <li v-for="node in selectedUndeletableNodes" :key="node">{{node}}</li> + </ul> + </p> + </div> </b-modal> </template> @@ -18,7 +26,8 @@ export default { name: 'ConfirmDeleteModal', computed: { - nodesToDelete() { return this.$store.state.nodesToDelete } + nodesToDelete() { return this.$store.state.nodesToDelete }, + selectedUndeletableNodes() { return this.$store.state.selectedUndeletableNodes } }, methods: { reset() { diff --git a/vospace-ui-frontend/src/store.js b/vospace-ui-frontend/src/store.js index 68f19dd..f610813 100644 --- a/vospace-ui-frontend/src/store.js +++ b/vospace-ui-frontend/src/store.js @@ -33,6 +33,7 @@ export default new Vuex.Store({ lastJobsCheckTime: null, user: 'anonymous', nodesToDelete: [], + selectedUndeletableNodes: [], writable: false, nodeToShare: { path: null, @@ -78,6 +79,9 @@ export default new Vuex.Store({ setNodesToDelete(state, paths) { updateArray(state.nodesToDelete, paths); }, + setSelectedUndeletableNodes(state, paths) { + updateArray(state.selectedUndeletableNodes, paths); + }, setWritable(state, value) { state.writable = value; }, -- GitLab