From aac7228bd91d3adfc953d9c0ac2482d9aeb878b1 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Mon, 16 Apr 2018 20:02:10 +0200 Subject: [PATCH] #297 - added basic account select to navbar; added account page (empty) and item to navbar --- .../controller/DatePickerController.java | 6 ----- .../controller/EmptyPageController.java | 7 ++++++ .../budgetmaster/entities/Account.java | 14 +++++++++++ .../repositories/AccountRepository.java | 2 ++ .../budgetmaster/services/HelpersService.java | 24 +++++++++++++++---- src/main/resources/languages/_de.properties | 2 ++ src/main/resources/languages/_en.properties | 2 ++ src/main/resources/static/css/style.css | 8 +++++++ src/main/resources/static/js/datePicker.js | 2 -- src/main/resources/static/js/main.js | 2 ++ src/main/resources/static/js/payments.js | 2 -- src/main/resources/templates/emptyPage.ftl | 1 + src/main/resources/templates/navbar.ftl | 13 ++++++++++ 13 files changed, 71 insertions(+), 14 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/DatePickerController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/DatePickerController.java index 822645d31..c7cdfb79b 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/controller/DatePickerController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/controller/DatePickerController.java @@ -1,24 +1,18 @@ package de.deadlocker8.budgetmaster.controller; -import de.deadlocker8.budgetmaster.entities.CategoryType; -import de.deadlocker8.budgetmaster.entities.Payment; import de.deadlocker8.budgetmaster.entities.Settings; -import de.deadlocker8.budgetmaster.repositories.PaymentRepository; import de.deadlocker8.budgetmaster.repositories.SettingsRepository; import de.deadlocker8.budgetmaster.services.HelpersService; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; import org.springframework.web.bind.annotation.CookieValue; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; -import java.util.List; @Controller diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/EmptyPageController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/EmptyPageController.java index da1b03012..178217dee 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/controller/EmptyPageController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/controller/EmptyPageController.java @@ -8,6 +8,13 @@ import org.springframework.web.bind.annotation.RequestMapping; @Controller public class EmptyPageController extends BaseController { + @RequestMapping("/accounts") + public String accounts(Model model) + { + model.addAttribute("active", "accounts"); + return "emptyPage"; + } + @RequestMapping("/reports") public String reports(Model model) { diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/Account.java b/src/main/java/de/deadlocker8/budgetmaster/entities/Account.java index 6610067be..9a5cad67b 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/entities/Account.java +++ b/src/main/java/de/deadlocker8/budgetmaster/entities/Account.java @@ -19,9 +19,12 @@ public class Account @OneToMany(mappedBy = "account", fetch = FetchType.LAZY) private List<Payment> referringPayments; + private boolean isSelected; + public Account(String name) { this.name = name; + this.isSelected = false; } public Account() @@ -58,6 +61,16 @@ public class Account this.referringPayments = referringPayments; } + public boolean isSelected() + { + return isSelected; + } + + public void setSelected(boolean selected) + { + isSelected = selected; + } + @Override public String toString() { @@ -65,6 +78,7 @@ public class Account "ID=" + ID + ", name='" + name + '\'' + ", referringPayments=" + referringPayments + + ", isSelected=" + isSelected + '}'; } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/repositories/AccountRepository.java b/src/main/java/de/deadlocker8/budgetmaster/repositories/AccountRepository.java index 01cba0e31..a04028294 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/repositories/AccountRepository.java +++ b/src/main/java/de/deadlocker8/budgetmaster/repositories/AccountRepository.java @@ -11,4 +11,6 @@ public interface AccountRepository extends JpaRepository<Account, Integer> List<Account> findAllByOrderByNameAsc(); Account findByName(String name); + + Account findByIsSelected(boolean isSelected); } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java index 8af33d685..ebf22fe0c 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java @@ -1,7 +1,9 @@ package de.deadlocker8.budgetmaster.services; +import de.deadlocker8.budgetmaster.entities.Account; import de.deadlocker8.budgetmaster.entities.Settings; import de.deadlocker8.budgetmaster.entities.Tag; +import de.deadlocker8.budgetmaster.repositories.AccountRepository; import de.deadlocker8.budgetmaster.repositories.SettingsRepository; import de.deadlocker8.budgetmaster.repositories.TagRepository; import de.deadlocker8.budgetmaster.utils.Colors; @@ -29,10 +31,13 @@ public class HelpersService @Autowired private TagRepository tagRepository; - + + @Autowired + private AccountRepository accountRepository; + public String getCurrencyString(int amount) { - return getCurrencyString(amount/100.0); + return getCurrencyString(amount / 100.0); } public String getCurrencyString(double amount) @@ -43,7 +48,7 @@ public class HelpersService format.setMinimumFractionDigits(2); return String.valueOf(format.format(amount)) + " " + settingsRepository.findOne(0).getCurrency(); } - + public String getURLEncodedString(String input) { try @@ -111,9 +116,10 @@ public class HelpersService } return years; } - + /** * Replaces line breaks and tabs with spaces + * * @param text * @return String */ @@ -152,4 +158,14 @@ public class HelpersService { return tagRepository.findAllByOrderByNameAsc(); } + + public List<Account> getAllAccounts() + { + return accountRepository.findAllByOrderByNameAsc(); + } + + public Account getCurrentAccount() + { + return accountRepository.findByIsSelected(true); + } } \ No newline at end of file diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index 89eed348f..26afbed66 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -42,6 +42,7 @@ title.database.export=Datenbank exportieren title.database.import=Datenbank importieren title.datepicker=Datum w�hlen title.tags=Das Tag-Eingabefeld +title.account=Konto # LOAD load.charts=Lade Diagramme... @@ -299,6 +300,7 @@ menu.reports=Berichte menu.settings=Einstellungen menu.about=�ber menu.logout=Logout +menu.accounts=Konten category.new.label.name=Name diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index a5afdd46a..e49c5c03d 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -42,6 +42,7 @@ title.database.export=Export Database title.database.import=Import Database title.datepicker=Choose date title.tags=The Tag-Inputfield +title.account=Account # LOAD load.charts=Loading Charts... @@ -299,6 +300,7 @@ menu.reports=Reports menu.settings=Settings menu.about=About menu.logout=Logout +menu.accounts=Accounts category.new.label.name=Name diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css index d17367662..fb6d43f2b 100644 --- a/src/main/resources/static/css/style.css +++ b/src/main/resources/static/css/style.css @@ -34,6 +34,10 @@ main { background-color: #5cb85c; } +.budgetmaster-dark-green { + background-color: #468C46; +} + .budgetmaster-red { background-color: #D82C29; } @@ -164,6 +168,10 @@ main { margin: 0 0 0 32px !important; } +.account-select-padding { + padding: 0 32px; +} + .no-padding { padding: 0; } diff --git a/src/main/resources/static/js/datePicker.js b/src/main/resources/static/js/datePicker.js index 78044a363..ff6341411 100644 --- a/src/main/resources/static/js/datePicker.js +++ b/src/main/resources/static/js/datePicker.js @@ -1,6 +1,4 @@ $(document).ready(function () { - $('select').material_select(); - $("#buttonChooseDate").click(function () { var month = $("#selectMonth").val(); var year = $("#selectYear").val(); diff --git a/src/main/resources/static/js/main.js b/src/main/resources/static/js/main.js index 1b57dd9bb..e7293bc16 100644 --- a/src/main/resources/static/js/main.js +++ b/src/main/resources/static/js/main.js @@ -4,6 +4,8 @@ $( document ).ready(function() { }); $('.modal').modal(); + + $('select').material_select(); }); function addClass(element, className) diff --git a/src/main/resources/static/js/payments.js b/src/main/resources/static/js/payments.js index 7f3ac3864..78a7cea6c 100644 --- a/src/main/resources/static/js/payments.js +++ b/src/main/resources/static/js/payments.js @@ -1,8 +1,6 @@ $( document ).ready(function() { $('#modalConfirmDelete').modal('open'); - $('select').material_select(); - if($(".datepicker").length) { $('.datepicker').pickadate({ diff --git a/src/main/resources/templates/emptyPage.ftl b/src/main/resources/templates/emptyPage.ftl index 8ef6c707a..76c4182eb 100644 --- a/src/main/resources/templates/emptyPage.ftl +++ b/src/main/resources/templates/emptyPage.ftl @@ -13,5 +13,6 @@ <!-- Scripts--> <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script> + <script src="/js/main.js"></script> </body> </html> \ No newline at end of file diff --git a/src/main/resources/templates/navbar.ftl b/src/main/resources/templates/navbar.ftl index 8ad8893a7..9e825a694 100644 --- a/src/main/resources/templates/navbar.ftl +++ b/src/main/resources/templates/navbar.ftl @@ -3,7 +3,10 @@ <ul id="slide-out" class="side-nav fixed"> <@itemLogo/> <@itemDivider/> + <@itemAccountSelect/> + <@itemDivider/> <@itemWithIcon "home", "/", locale.getString("menu.home"), "home", "budgetmaster-blue", activeID/> + <@itemWithIcon "accounts", "/accounts", locale.getString("menu.accounts"), "account_balance", "budgetmaster-dark-green", activeID/> <@itemWithIcon "payments", "/payments", locale.getString("menu.payments"), "list", "budgetmaster-baby-blue", activeID/> <@subListStart "chart" locale.getString("menu.charts"), "show_chart" "budgetmaster-purple", activeID/> <@itemPlain "chartCategories", "", locale.getString("menu.charts.chartCategories"), activeID/> @@ -35,6 +38,16 @@ <li><div class="divider no-margin"></div></li> </#macro> +<#macro itemAccountSelect> +<div class="input-field account-select-padding"> + <select id="selectAccount"> + <#list helpers.getAllAccounts() as account> + <option <#if account.isSelected()>selected</#if> value="${account.getName()}">${account.getName()}</option> + </#list> + </select> +</div> +</#macro> + <#macro itemPlain ID link text activeID> <li <#if activeID == ID>class="active"</#if>><a href="${link}" class="waves-effect"><span class="nav-margin">${text}</span></a></li> </#macro> -- GitLab