diff --git a/web/app/query_results/views.py b/web/app/query_results/views.py index 8a2e01765319f2b512e15941d54dc85873ef8e3f..78fda741cbd594c38137e85655942946ac48a109 100644 --- a/web/app/query_results/views.py +++ b/web/app/query_results/views.py @@ -127,9 +127,9 @@ def delete_query_result(query_result_id): if not (query_result.creator == current_user or current_user.is_administrator()): abort(403) - tasks.delete_result(query_result_id) + tasks.delete_query_result(query_result_id) flash('Query result deleted!', 'result') - return redirect(url_for('main.dashboard')) + return redirect(url_for('services.service', service="corpus_analysis")) @query_results.route('/<int:query_result_id>/download') diff --git a/web/app/static/js/nopaque.lists.js b/web/app/static/js/nopaque.lists.js index 50d1a0c3b2ba9551fb83353b6b051f4653d76194..9cb256ddf2bcaca0a113872723f9fb7ceceac304 100644 --- a/web/app/static/js/nopaque.lists.js +++ b/web/app/static/js/nopaque.lists.js @@ -118,6 +118,7 @@ RessourceList.dataMapper = { // Mapping for imported result entities from corpus analysis. // Shown in imported results table QueryResult: query_result => ({corpus_name: query_result.query_metadata.corpus_name, + "delete-link": `prepareQueryResultModal(${query_result.id})`, description: query_result.description, id: query_result.id, "inspect-link": `/query_results/${query_result.id}/inspect`, @@ -255,6 +256,9 @@ RessourceList.options = { <a class="btn-floating tooltipped waves-effect waves-light inspect-link" data-position="top" data-tooltip="View Results"> <i class="material-icons">search</i> </a> + <a class="btn-floating modal-trigger red tooltipped waves-effect waves-light delete-link" data-position="top" data-tooltip="Delete"> + <i class="material-icons">delete</i> + </a> <a class="btn-floating tooltipped link waves-effect waves-light" data-position="top" data-tooltip="Go to query result"> <i class="material-icons">send</i> </a> @@ -265,6 +269,7 @@ RessourceList.options = { "query", "title", {data: ["id"]}, + {name: "delete-link", attr: "onclick"}, {name: "inspect-link", attr: "href"}, {name: "link", attr: "href"}]}, // User entity blueprint setting html strucuture per entity per row diff --git a/web/app/templates/services/corpus_analysis.html.j2 b/web/app/templates/services/corpus_analysis.html.j2 index ce93c8e0fd489dd1c6bd663072ab781035d81c84..6c34bf021ca227c1b1a34eeb10bd103e4578b3a0 100644 --- a/web/app/templates/services/corpus_analysis.html.j2 +++ b/web/app/templates/services/corpus_analysis.html.j2 @@ -83,11 +83,42 @@ </div> </div> +<!-- Modals --> +<div id="delete-query-result-modal" class="modal no-autoinit"> + <div class="modal-content"> + <h4>Confirm deletion</h4> + <p>Do you really want to delete the query result <b id="selected-query-result-title"></b>? It will be permanently deleted.</p> + </div> + <div class="modal-footer"> + <a href="#!" class="btn modal-close waves-effect waves-light">Cancel</a> + <a class="btn modal-close red waves-effect waves-light" id="selected-query-result-delete-link"><i class="material-icons left">delete</i>Delete</a> + </div> +</div> + <script> var corpusList = new RessourceList("corpora", nopaque.corporaSubscribers, "Corpus", {page: 10}); var queryResultList = new RessourceList("query-results", nopaque.queryResultsSubscribers, "QueryResult", {page: 10}); + var deleteQueryResultModalElement = document.getElementById("delete-query-result-modal"); + var deleteQueryResultModal; + var selectedQueryResultTitleElement = document.getElementById("selected-query-result-title"); + var selectedQueryResultDeleteLinkElement = document.getElementById("selected-query-result-delete-link"); + document.addEventListener("DOMContentLoaded", () => { + deleteQueryResultModal = M.Modal.init(deleteQueryResultModalElement); + }); + function prepareQueryResultModal(selectedQueryResultId) { + if (selectedQueryResultId in nopaque.user.query_results) { + selectedQueryResult = nopaque.user.query_results[selectedQueryResultId]; + selectedQueryResultTitleElement.innerText = selectedQueryResult.title; + selectedQueryResultDeleteLinkElement.href = `/query_results/${selectedQueryResult.id}/delete`; + } else { + selectedQueryResult = None; + selectedQueryResultTitleElement.innerText = ""; + selectedQueryResultDeleteLinkElement.href = ""; + } + deleteQueryResultModal.open(); + } </script> {% endblock %}