From 74caabf4942e2d43a5609c949401af98e33aded9 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Tue, 14 Jun 2022 21:49:12 +0200 Subject: [PATCH] #696 - show warning about unsaved settings if one setting is change inside a container --- .../resources/languages/base_de.properties | 1 + .../resources/languages/base_en.properties | 1 + .../main/resources/static/css/settings.css | 20 ++++++++++++ .../src/main/resources/static/js/settings.js | 5 +++ .../resources/static/js/settingsContainers.js | 2 ++ .../containers/settingsPersonalization.ftl | 32 +++++++++++++++++++ .../settings/containers/settingsSecurity.ftl | 11 +++++++ .../containers/settingsTransactions.ftl | 7 ++++ .../settings/containers/settingsUpdate.ftl | 5 +++ .../templates/settings/settingsMacros.ftl | 5 ++- 10 files changed, 88 insertions(+), 1 deletion(-) diff --git a/BudgetMasterServer/src/main/resources/languages/base_de.properties b/BudgetMasterServer/src/main/resources/languages/base_de.properties index 37ebada83..b5073104b 100644 --- a/BudgetMasterServer/src/main/resources/languages/base_de.properties +++ b/BudgetMasterServer/src/main/resources/languages/base_de.properties @@ -322,6 +322,7 @@ settings.personalization=Personalisierung settings.personalization.reload.page=Zum Anwenden visueller Änderungen <a href="">Seite neu laden</a> settings.transactions=Buchungen settings.misc=Sonstiges +settings.warning.unsaved=ungespeichert settings.database.import=Importieren settings.database.export=Exportieren diff --git a/BudgetMasterServer/src/main/resources/languages/base_en.properties b/BudgetMasterServer/src/main/resources/languages/base_en.properties index 7f2077ed9..77a27e38c 100644 --- a/BudgetMasterServer/src/main/resources/languages/base_en.properties +++ b/BudgetMasterServer/src/main/resources/languages/base_en.properties @@ -323,6 +323,7 @@ settings.personalization=Personalization settings.personalization.reload.page=<a href="">Reload</a> page to apply visual changes settings.transactions=Transactions settings.misc=Misc +settings.warning.unsaved=unsaved settings.database.import=Import settings.database.export=Export diff --git a/BudgetMasterServer/src/main/resources/static/css/settings.css b/BudgetMasterServer/src/main/resources/static/css/settings.css index f51ab4bd8..7c8782177 100644 --- a/BudgetMasterServer/src/main/resources/static/css/settings.css +++ b/BudgetMasterServer/src/main/resources/static/css/settings.css @@ -30,4 +30,24 @@ #verificationCode:hover { cursor: pointer; +} + +.collapsible-header-button { + position: absolute; + right: 1rem; + top: 1.05rem; + display: flex; + align-items: center; + color: var(--color-yellow); + font-weight: bold; + font-size: 0.9rem; +} + +.collapsible-header-button i { + margin-right: 0.3rem; + font-size: 1.3rem; +} + +.collapsible-header-button.hidden { + display: none; } \ No newline at end of file diff --git a/BudgetMasterServer/src/main/resources/static/js/settings.js b/BudgetMasterServer/src/main/resources/static/js/settings.js index 19e933ca7..4e35537c0 100644 --- a/BudgetMasterServer/src/main/resources/static/js/settings.js +++ b/BudgetMasterServer/src/main/resources/static/js/settings.js @@ -117,4 +117,9 @@ function onAutoBackupStrategyChange(newSelectedIndex) $('#settings-auto-backup-local').toggle(newSelectedIndex === 0); // local backup with file system copies // index 1 --> git local doesn't have any settings $('#settings-auto-backup-git-remote').toggle(newSelectedIndex === 2); // git remote +} + +function toggleSettingsContainerHeader(id, hide) +{ + document.querySelector('#' + id + ' .collapsible-header-button').classList.toggle('hidden', hide); } \ No newline at end of file diff --git a/BudgetMasterServer/src/main/resources/static/js/settingsContainers.js b/BudgetMasterServer/src/main/resources/static/js/settingsContainers.js index 127a469e7..71f6cac90 100644 --- a/BudgetMasterServer/src/main/resources/static/js/settingsContainers.js +++ b/BudgetMasterServer/src/main/resources/static/js/settingsContainers.js @@ -20,6 +20,8 @@ function initSettingsContainer(formName, containerId) $('.tooltipped').tooltip(); $('select').formSelect(); + toggleSettingsContainerHeader(containerId + 'Header', true); + let toastContent = document.querySelector('#' + containerId + ' .securityContainerToastContent').innerHTML.trim(); if(toastContent) { diff --git a/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsPersonalization.ftl b/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsPersonalization.ftl index 4f475e207..5bae17b98 100644 --- a/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsPersonalization.ftl +++ b/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsPersonalization.ftl @@ -72,6 +72,38 @@ </div> </div> </#if> + + <script> + $('#settings-language').change(function() + { + toggleSettingsContainerHeader('personalizationSettingsContainerHeader', false); + }); + + $('#settings-currency').on('change keydown paste input', function() + { + toggleSettingsContainerHeader('personalizationSettingsContainerHeader', false); + }); + + $('input[name="useDarkTheme"]').change(function() + { + toggleSettingsContainerHeader('personalizationSettingsContainerHeader', false); + }); + + $('input[name="showCategoriesAsCircles"]').change(function() + { + toggleSettingsContainerHeader('personalizationSettingsContainerHeader', false); + }); + + $('#settings-password-confirmation').on('change keydown paste input', function() + { + toggleSettingsContainerHeader('personalizationSettingsContainerHeader', false); + }); + + $('#settings-search-items-per-page').change(function() + { + toggleSettingsContainerHeader('personalizationSettingsContainerHeader', false); + }); + </script> </@settingsContainerMacros.settingsContainer> </#macro> diff --git a/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsSecurity.ftl b/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsSecurity.ftl index e4205e876..16e50ce68 100644 --- a/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsSecurity.ftl +++ b/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsSecurity.ftl @@ -30,6 +30,17 @@ <@header.buttonSubmit name='action' icon='save' localizationKey='save' color='background-green' formaction='/settings/save/security'/> </div> </div> + + <script> + $('#settings-password').on('change keydown paste input', function() + { + toggleSettingsContainerHeader('securitySettingsContainerHeader', false); + }); + $('#settings-password-confirmation').on('change keydown paste input', function() + { + toggleSettingsContainerHeader('securitySettingsContainerHeader', false); + }); + </script> </@settingsContainerMacros.settingsContainer> </#macro> diff --git a/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsTransactions.ftl b/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsTransactions.ftl index b9d790f32..6e26a5c5f 100644 --- a/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsTransactions.ftl +++ b/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsTransactions.ftl @@ -33,6 +33,13 @@ <@header.buttonSubmit name='action' icon='save' localizationKey='save' color='background-green' formaction='/settings/save/transactions'/> </div> </div> + + <script> + $('input[name="restActivated"]').change(function() + { + toggleSettingsContainerHeader('transactionsSettingsContainerHeader', false); + }); + </script> </@settingsContainerMacros.settingsContainer> </#macro> diff --git a/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsUpdate.ftl b/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsUpdate.ftl index a353dc77f..eaad0d1bb 100644 --- a/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsUpdate.ftl +++ b/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsUpdate.ftl @@ -105,6 +105,11 @@ } }); }); + + $('input[name="autoUpdateCheckEnabled"]').change(function() + { + toggleSettingsContainerHeader('updateSettingsContainerHeader', false); + }); </script> </@settingsContainerMacros.settingsContainer> </#macro> diff --git a/BudgetMasterServer/src/main/resources/templates/settings/settingsMacros.ftl b/BudgetMasterServer/src/main/resources/templates/settings/settingsMacros.ftl index 5e3c2d9f7..79f231c53 100644 --- a/BudgetMasterServer/src/main/resources/templates/settings/settingsMacros.ftl +++ b/BudgetMasterServer/src/main/resources/templates/settings/settingsMacros.ftl @@ -301,7 +301,10 @@ <#macro settingsCollapsibleItem id icon title isFontAwesomeIcon=false> <li class="z-depth-2"> - <div class="collapsible-header bold"><#if isFontAwesomeIcon><i class="${icon}"></i><#else><i class="material-icons">${icon}</i></#if>${title}</div> + <div class="collapsible-header bold" id="${id}Header"> + <#if isFontAwesomeIcon><i class="${icon}"></i><#else><i class="material-icons">${icon}</i></#if>${title} + <div class="collapsible-header-button hidden"><i class="material-icons text-yellow">warning</i>${locale.getString('settings.warning.unsaved')}</div> + </div> <div class="collapsible-body"> <div class="row no-margin-bottom" id="${id}"> <#nested> -- GitLab