From 2bb25a824656610a39b8721095cc7fb3a1f39944 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 25 Jul 2021 16:39:35 +0200 Subject: [PATCH] #509 - prevent page reload on requesting a chart delete (+ no page reload on modal close) --- .../budgetmaster/charts/ChartController.java | 4 ++-- src/main/resources/static/js/categories.js | 2 -- src/main/resources/static/js/charts.js | 19 +++++++++++-------- .../categories/deleteCategoryModal.ftl | 2 +- .../templates/charts/deleteChartModal.ftl | 7 +++++++ .../resources/templates/charts/manage.ftl | 8 ++------ .../resources/templates/helpers/header.ftl | 4 ++-- 7 files changed, 25 insertions(+), 21 deletions(-) create mode 100644 src/main/resources/templates/charts/deleteChartModal.ftl diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java index 3ae6fc4a4..a0d26a869 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java @@ -170,8 +170,8 @@ public class ChartController extends BaseController } model.addAttribute("charts", chartService.getAllEntitiesAsc()); - model.addAttribute("currentChart", chartService.getRepository().getOne(ID)); - return "charts/manage"; + model.addAttribute("chartToDelete", chartService.getRepository().getOne(ID)); + return "charts/deleteChartModal"; } @GetMapping(value = "/{ID}/delete") diff --git a/src/main/resources/static/js/categories.js b/src/main/resources/static/js/categories.js index 90822bdf9..b3479347e 100644 --- a/src/main/resources/static/js/categories.js +++ b/src/main/resources/static/js/categories.js @@ -1,7 +1,5 @@ $(document).ready(function() { - $('#modalConfirmDelete').modal('open'); - if($('#category-name').length) { document.getElementById('category-name').focus(); diff --git a/src/main/resources/static/js/charts.js b/src/main/resources/static/js/charts.js index 896d50c8a..9f6494963 100644 --- a/src/main/resources/static/js/charts.js +++ b/src/main/resources/static/js/charts.js @@ -13,11 +13,6 @@ $(document).ready(function() editor.save(); } - if($("#modalConfirmDelete").length) - { - $('#modalConfirmDelete').modal('open'); - } - if($(".datepicker").length) { chartPickerStartDate = M.Datepicker.init(document.getElementById('chart-datepicker'), { @@ -121,10 +116,18 @@ $(document).ready(function() document.getElementById('buttonShowChartSettings').classList.toggle('hidden', true); }); - filterChartPreviews(selectChartID); + if($(".chart-preview-column").length) + { + filterChartPreviews(selectChartID); + + let showEditSettingsButton = document.getElementsByName('NewChartSettings')[0].classList.contains('hidden'); + document.getElementById('buttonShowChartSettings').classList.toggle('hidden', !showEditSettingsButton); + } - let showEditSettingsButton = document.getElementsByName('NewChartSettings')[0].classList.contains('hidden'); - document.getElementById('buttonShowChartSettings').classList.toggle('hidden', !showEditSettingsButton); + $('.button-request-delete-chart').click(function() + { + fetchAndShowModalContent(this.dataset.url, '#deleteModalContainerOnDemand', '#modalConfirmDelete', function(){}); + }); }); function createDatePickerEnd(minDate, selectedDate) diff --git a/src/main/resources/templates/categories/deleteCategoryModal.ftl b/src/main/resources/templates/categories/deleteCategoryModal.ftl index 15bc49cf3..705490ea2 100644 --- a/src/main/resources/templates/categories/deleteCategoryModal.ftl +++ b/src/main/resources/templates/categories/deleteCategoryModal.ftl @@ -17,7 +17,7 @@ </div> <div class="modal-footer background-color"> - <@header.buttonLink url='/categories' icon='clear' localizationKey='cancel' color='red' classes='modal-action modal-close text-white'/> + <@header.buttonLink url='' icon='clear' localizationKey='cancel' color='red' classes='modal-action modal-close text-white' noUrl=true/> <@header.buttonLink url='' icon='delete' localizationKey='delete' color='green' id='buttonDeleteCategory' classes='modal-action modal-close text-white' noUrl=true/> </div> </div> \ No newline at end of file diff --git a/src/main/resources/templates/charts/deleteChartModal.ftl b/src/main/resources/templates/charts/deleteChartModal.ftl new file mode 100644 index 000000000..c104d8790 --- /dev/null +++ b/src/main/resources/templates/charts/deleteChartModal.ftl @@ -0,0 +1,7 @@ +<#global locale = static["de.thecodelabs.utils.util.Localization"]> +<#import "/spring.ftl" as s> +<#import "../helpers/header.ftl" as header> + +<@header.modalConfirmDelete title=locale.getString("info.title.chart.delete") confirmUrl='/charts' itemId=chartToDelete.getID() confirmButtonTextKey='info.title.chart.delete'> + <p>${locale.getString("info.text.chart.delete", chartToDelete.getName())}</p> +</@header.modalConfirmDelete> \ 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 e032e8cf5..13ebd1386 100644 --- a/src/main/resources/templates/charts/manage.ftl +++ b/src/main/resources/templates/charts/manage.ftl @@ -46,7 +46,7 @@ <td> <@header.buttonFlat url='/charts/' + chart.ID?c + '/edit' icon='edit' localizationKey='' classes="no-padding text-default"/> <#if (chart.getType().name() == "CUSTOM")> - <@header.buttonFlat url='/charts/' + chart.ID?c + '/requestDelete' icon='delete' localizationKey='' classes="no-padding text-default"/> + <@header.buttonFlat url='/charts/' + chart.ID?c + '/requestDelete' icon='delete' localizationKey='' classes="no-padding text-default button-request-delete-chart" isDataUrl=true/> </#if> </td> </tr> @@ -59,11 +59,7 @@ </@header.content> </div> - <#if currentChart??> - <@header.modalConfirmDelete title=locale.getString("info.title.chart.delete") confirmUrl='/charts' cancelUrlBase='/charts/manage' itemId=currentChart.getID() confirmButtonTextKey='info.title.chart.delete'> - <p>${locale.getString("info.text.chart.delete", currentChart.getName())}</p> - </@header.modalConfirmDelete> - </#if> + <div id="deleteModalContainerOnDemand"></div> </main> <#import "../helpers/scripts.ftl" as scripts> diff --git a/src/main/resources/templates/helpers/header.ftl b/src/main/resources/templates/helpers/header.ftl index 485ab5ffb..927776432 100644 --- a/src/main/resources/templates/helpers/header.ftl +++ b/src/main/resources/templates/helpers/header.ftl @@ -45,7 +45,7 @@ </#if> </#macro> -<#macro modalConfirmDelete title confirmUrl cancelUrlBase itemId confirmButtonTextKey id="modalConfirmDelete" classes=""> +<#macro modalConfirmDelete title confirmUrl itemId confirmButtonTextKey id="modalConfirmDelete" classes=""> <div id="${id}" class="modal background-color ${classes}"> <div class="modal-content"> <h4>${title}</h4> @@ -53,7 +53,7 @@ <#nested> </div> <div class="modal-footer background-color"> - <@buttonLink url=cancelUrlBase icon='clear' localizationKey='cancel' color='red' classes='modal-action modal-close text-white'/> + <@buttonLink url='' icon='clear' localizationKey='cancel' color='red' classes='modal-action modal-close text-white' noUrl=true/> <@buttonLink url=confirmUrl + '/' + itemId?c + '/delete' icon='delete' localizationKey=confirmButtonTextKey color='green' classes='modal-action modal-close text-white'/> </div> </div> -- GitLab