diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java index c593719bd65c4459cf2c5da25f773e3f7e3ead16..54cd57729c96701988bd1900df9d675782f99d50 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java @@ -65,8 +65,11 @@ public class AccountController extends BaseController } final Account account = accountOptional.get(); - account.setReadOnly(!account.isReadOnly()); - accountService.getRepository().save(account); + if(!account.isDefault()) + { + account.setReadOnly(!account.isReadOnly()); + accountService.getRepository().save(account); + } String referer = request.getHeader("Referer"); if(referer.contains("database/import")) diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java index 0fa66073207a745ec509e8a04e7e5345587c1aa1..525f7ccff81548a5c4c01318faa026ad1bbca4a9 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java @@ -149,8 +149,6 @@ public class AccountService implements Resetable public void setAsDefaultAccount(int ID) { - unsetDefaultForAllAccounts(); - Optional<Account> accountToSelectOptional = accountRepository.findById(ID); if(accountToSelectOptional.isEmpty()) { @@ -158,6 +156,13 @@ public class AccountService implements Resetable } Account accountToSelect = accountToSelectOptional.get(); + if(accountToSelect.isReadOnly()) + { + return; + } + + unsetDefaultForAllAccounts(); + accountToSelect.setDefault(true); accountRepository.save(accountToSelect); } diff --git a/src/main/resources/static/css/dark/style.css b/src/main/resources/static/css/dark/style.css index 807ec54678debe16167d482021e808f7694ad402..206878b184212f11b9907404df094071f6fd65ca 100644 --- a/src/main/resources/static/css/dark/style.css +++ b/src/main/resources/static/css/dark/style.css @@ -612,6 +612,12 @@ input[type="radio"]:not(:checked) + span::before, [type="radio"]:not(:checked) + color: #2E79B9; } +.placeholder-icon { + display: inline-block; + width: 1.3rem; + margin-right: 15px; +} + .invisible { opacity: 0; } diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css index 8a988dd3d872fc44588d62f39ac768d8ac8a81ea..1ad8cb5c418f839788a061565aac343432c85f0d 100644 --- a/src/main/resources/static/css/style.css +++ b/src/main/resources/static/css/style.css @@ -527,6 +527,12 @@ input[type="radio"]:checked + span::after, [type="radio"].with-gap:checked + spa color: #2E79B9; } +.placeholder-icon { + display: inline-block; + width: 1.3rem; + margin-right: 15px; +} + .invisible { opacity: 0; } diff --git a/src/main/resources/templates/accounts/accounts.ftl b/src/main/resources/templates/accounts/accounts.ftl index 6a865e4fec5729204ff486d9db4d0aed7299b484..73b5a452bb4e4e65c7f3af2754b7fbb72f22bbf7 100644 --- a/src/main/resources/templates/accounts/accounts.ftl +++ b/src/main/resources/templates/accounts/accounts.ftl @@ -24,17 +24,19 @@ <#if (account.getType().name() == "CUSTOM")> <tr> <td> - <a href="<@s.url '/accounts/${account.getID()?c}/setAsDefault'/>" class="btn-flat no-padding text-color tooltipped" data-position="left" data-tooltip="${locale.getString("account.tooltip.default")}"><i class="material-icons left"><#if account.isDefault()>star<#else>star_border</#if></i></a> - <#if account.isReadOnly()> <#assign toolTipText = locale.getString("account.tooltip.readonly.activate")/> <#assign lockIcon = '<i class="fas fa-lock"></i>'/> + <div class="placeholder-icon"></div> <#else> <#assign toolTipText = locale.getString("account.tooltip.readonly.deactivate")/> <#assign lockIcon = '<i class="fas fa-lock-open"></i>'/> + <a href="<@s.url '/accounts/${account.getID()?c}/setAsDefault'/>" class="btn-flat no-padding text-color tooltipped" data-position="left" data-tooltip="${locale.getString("account.tooltip.default")}"><i class="material-icons left"><#if account.isDefault()>star<#else>star_border</#if></i></a> </#if> - <a href="<@s.url '/accounts/${account.getID()?c}/toggleReadOnly'/>" class="btn-flat no-padding text-color tooltipped" data-position="left" data-tooltip="${toolTipText}">${lockIcon}</a> + <#if !account.isDefault()> + <a href="<@s.url '/accounts/${account.getID()?c}/toggleReadOnly'/>" class="btn-flat no-padding text-color tooltipped" data-position="right" data-tooltip="${toolTipText}">${lockIcon}</a> + </#if> </td> <td>${account.getName()}</td> <td>