diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/client/VOSpaceClient.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/client/VOSpaceClient.java index fd0b92cd221d305778b7e0ded1e1ac5095490eb0..20d2b6d1d60d49f4e26791b9d2168417a5c41e68 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/client/VOSpaceClient.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/client/VOSpaceClient.java @@ -160,7 +160,7 @@ public class VOSpaceClient { public void deleteCollection(Long id, Optional<String> token) { - HttpRequest request = getRequest("/collections?id="+id, token) + HttpRequest request = getRequest("/collections/"+id, token) .header("Accept", useJson ? "application/json" : "text/xml") .header("Content-Type", useJson ? "application/json" : "text/xml") .DELETE() diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodeCollectionsController.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodeCollectionsController.java index a4773f24afc90efec0b3d3effeb63583c5945668..3277dc67e67c895e2f63b7cd03db446d091e08b9 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodeCollectionsController.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodeCollectionsController.java @@ -17,7 +17,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -61,4 +63,19 @@ public class NodeCollectionsController extends BaseController { return ResponseEntity.noContent().build(); } + @DeleteMapping(value = "/collections/{collectionId}", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity<?> deleteNodeCollection(User principal, + @PathVariable Long collectionId) + throws Exception + { + + LOG.debug("delete collection {} for user {}", + collectionId, principal.getName()); + + // Call creation logic + client.deleteCollection(collectionId, tokenProvider.getToken()); + + return ResponseEntity.noContent().build(); + } + } diff --git a/vospace-ui-frontend/src/api/server/index.js b/vospace-ui-frontend/src/api/server/index.js index c75aa26186b61790d5e2188f1aaf35fa1dd374e4..7dde1a2bc01b372dfe4861c7262c3f43364cd174 100644 --- a/vospace-ui-frontend/src/api/server/index.js +++ b/vospace-ui-frontend/src/api/server/index.js @@ -128,7 +128,7 @@ export default { }); }, deleteCollection(collectionId) { - let url = BASE_API_URL + 'collections?id='+collectionId; + let url = BASE_API_URL + 'collections/'+collectionId; return apiRequest({ method: 'DELETE', url: url, diff --git a/vospace-ui-frontend/src/components/Collections.vue b/vospace-ui-frontend/src/components/Collections.vue index c946e9216468d709e49351dfc0a018f10fe5ea0d..a6a07de601525db99b93571ae45805d980ffd166 100644 --- a/vospace-ui-frontend/src/components/Collections.vue +++ b/vospace-ui-frontend/src/components/Collections.vue @@ -13,16 +13,17 @@ <div v-if="collections.length > 0" class="mb-3"> <table class="table b-table table-striped table-hover"> <thead> + <tr> <th>Id</th> <th>Title</th> - <th></th> + <th>Actions</th> </tr> </thead> <tbody> <tr v-for="collection in collections" :key="collection.id"> <td>{{collection.id}}</td> <td>{{collection.title}}</td> - <td></td> + <td><b-icon-trash color="red" @click="deleteCollection(collection.id)"/></td> </tr> </tbody> </table> @@ -41,11 +42,13 @@ </template> <script> +import { BIconTrash } from 'bootstrap-vue' import FAQModal from './modal/FAQModal.vue' import CreateCollectionModal from './modal/CreateCollectionModal.vue' export default { components: { + BIconTrash, FAQModal, CreateCollectionModal }, @@ -60,6 +63,9 @@ export default { methods: { loadCollections() { this.$store.dispatch('loadCollections'); + }, + deleteCollection(id) { + this.$store.dispatch('deleteCollection', id); } } }