From fe6fd70fd831cb1923d29b29586be157dc92ae79 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 23 Jun 2019 15:11:26 +0200 Subject: [PATCH] #436 - functionality for editing existing charts --- .../budgetmaster/charts/ChartController.java | 32 ++++++++++++++++++- src/main/resources/languages/_de.properties | 2 ++ src/main/resources/languages/_en.properties | 2 ++ src/main/resources/static/js/charts.js | 6 ++++ .../resources/templates/charts/manage.ftl | 21 ++++-------- 5 files changed, 48 insertions(+), 15 deletions(-) create mode 100644 src/main/resources/static/js/charts.js diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java index a77046be3..3d1445633 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java @@ -1,6 +1,5 @@ package de.deadlocker8.budgetmaster.charts; -import de.deadlocker8.budgetmaster.categories.Category; import de.deadlocker8.budgetmaster.controller.BaseController; import de.deadlocker8.budgetmaster.services.HelpersService; import de.deadlocker8.budgetmaster.settings.SettingsService; @@ -84,4 +83,35 @@ public class ChartController extends BaseController return "redirect:/charts/manage"; } + + @RequestMapping("/charts/{ID}/requestDelete") + public String requestDeleteChart(Model model, @PathVariable("ID") Integer ID) + { + if(!isDeletable(ID)) + { + return "redirect:/charts/manage"; + } + + model.addAttribute("charts", chartService.getRepository().findAllByOrderByNameAsc()); + model.addAttribute("currentChart", chartService.getRepository().getOne(ID)); + model.addAttribute("settings", settingsService.getSettings()); + return "charts/manage"; + } + + @RequestMapping(value = "/charts/{ID}/delete") + public String deleteChart(Model model, @PathVariable("ID") Integer ID) + { + if(isDeletable(ID)) + { + chartService.getRepository().delete(ID); + } + + return "redirect:/charts/manage"; + } + + private boolean isDeletable(Integer ID) + { + Chart chartToDelete = chartService.getRepository().getOne(ID); + return chartToDelete != null && chartToDelete.getType() == ChartType.CUSTOM; + } } diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index 80bd5ba2b..a3c483b4a 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -93,6 +93,8 @@ info.button.account.delete=Konto und Buchungen l info.title.transaction.delete=Buchung l�schen info.text.transaction.delete=M�chtest du die Buchung "{0}" wirklich unwiderruflich l�schen? info.text.transaction.repeating.delete=M�chtest du die Buchung "{0}" wirklich unwiderruflich l�schen? <br>Hinweis: Es handelt sich um eine wiederholende Buchung. Beim L�schen dieser Buchung werden alle zugeh�rigen Wiederholungen ebenfalls gel�scht! +info.title.chart.delete=Diagramm l�schen +info.text.chart.delete=M�chtest du das Diagramm "{0}" wirklich unwiderruflich l�schen? info.title.database.delete=Datenbank l�schen info.header.text.database.delete=Soll die Datenbank wirklich unwiderruflich gel�scht werden?<br>Hinweis: Beim L�schen der Datenbank werden alle Buchungen, Kategorien und Konten unwiderruflich gel�scht. diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index 61f06b1a5..a0778df47 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -93,6 +93,8 @@ info.button.account.delete=Delete Account and Transactions info.title.transaction.delete=Delete Entry info.text.transaction.delete=Do you really want to delete the entry "{0}"? This can''t be undone. info.text.transaction.repeating.delete=Do you really want to delete the entry "{0}"? This can''t be undone.<br>Note: This transaction is a repeating transaction. Deleting this transaction will delete all related occurrences too! +info.title.chart.delete=Delete Chart +info.text.chart.delete=Do you really want to delete the chart "{0}"? info.title.database.delete=Delete Database info.header.text.database.delete=Do you really want to delete the database? This can''t be undone.<br>Note: Deleting the database will delete all transactions, categories and accounts permanently. diff --git a/src/main/resources/static/js/charts.js b/src/main/resources/static/js/charts.js new file mode 100644 index 000000000..e9b6a1063 --- /dev/null +++ b/src/main/resources/static/js/charts.js @@ -0,0 +1,6 @@ +$( document ).ready(function() { + if($("#modalConfirmDelete").length) + { + $('#modalConfirmDelete').modal('open'); + } +}); \ No newline at end of file diff --git a/src/main/resources/templates/charts/manage.ftl b/src/main/resources/templates/charts/manage.ftl index 95bd0bc3a..a446156c4 100644 --- a/src/main/resources/templates/charts/manage.ftl +++ b/src/main/resources/templates/charts/manage.ftl @@ -55,24 +55,16 @@ </div> </div> - <#if currentCategory??> + <#if currentChart??> <!-- confirm delete modal --> - <div id="modalConfirmDelete" class="modal categoryDeleteModal background-color"> + <div id="modalConfirmDelete" class="modal background-color"> <div class="modal-content"> - <h4>${locale.getString("info.title.category.delete")}</h4> - <p>${locale.getString("info.text.category.delete", currentCategory.name)}</p> - <p>${locale.getString("info.text.category.delete.move")}</p> - - <form name="DestinationCategory" id="formDestinationCategory" action="<@s.url '/categories/${currentCategory.ID?c}/delete'/>" method="post"> - <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> - <#import "../helpers/validation.ftl" as validation> - <@newTransactionMacros.categorySelect availableCategories preselectedCategory "col s12 m12 l8 offset-l2" locale.getString("info.title.category.delete.move")/> - </form> + <h4>${locale.getString("info.title.chart.delete")}</h4> + <p>${locale.getString("info.text.chart.delete", currentChart.getName())}</p> </div> - <div class="modal-footer background-color"> - <a href="<@s.url '/categories'/>" class="modal-action modal-close waves-effect waves-light red btn-flat white-text">${locale.getString("cancel")}</a> - <a id="buttonDeleteCategory" class="modal-action modal-close waves-effect waves-light green btn-flat white-text">${locale.getString("delete")}</a> + <a href="<@s.url '/charts/manage'/>" class="modal-action modal-close waves-effect waves-light red btn-flat white-text">${locale.getString("cancel")}</a> + <a href="<@s.url '/charts/${currentChart.getID()?c}/delete'/>" class="modal-action modal-close waves-effect waves-light green btn-flat white-text">${locale.getString("info.title.chart.delete")}</a> </div> </div> </#if> @@ -80,5 +72,6 @@ <#import "../helpers/scripts.ftl" as scripts> <@scripts.scripts/> + <script src="<@s.url '/js/charts.js'/>"></script> </body> </html> \ No newline at end of file -- GitLab