From b50847c828ed888210595103026dd27a3f49b955 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 16 Feb 2019 16:36:03 +0100
Subject: [PATCH] #293 - added reset button

---
 .../controller/FilterController.java          | 43 +++++++++++--------
 .../filter/FilterConfiguration.java           |  2 +
 src/main/resources/languages/_de.properties   |  2 +-
 src/main/resources/languages/_en.properties   |  2 +-
 .../resources/templates/filter/filter.ftl     | 12 ++----
 .../templates/filter/filterMacros.ftl         | 36 ++++++++++++++++
 6 files changed, 68 insertions(+), 29 deletions(-)
 create mode 100644 src/main/resources/templates/filter/filterMacros.ftl

diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/FilterController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/FilterController.java
index 0a30210fe..b2e010a95 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/controller/FilterController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/controller/FilterController.java
@@ -33,26 +33,10 @@ public class FilterController extends BaseController
 	private HelpersService helpers;
 
 	@RequestMapping("/filter")
-	public String filter(Model model, @CookieValue(value = "currentDate", required = false) String cookieDate)
+	public String filter(Model model)
 	{
-		DateTime date = helpers.getDateTimeFromCookie(cookieDate);
-
-		model.addAttribute("currentDate", date);
-
-		List<Category> categories = categoryService.getRepository().findAllByOrderByNameAsc();
-		List<FilterCategory> filterCategories = new ArrayList<>();
-		for(Category category : categories)
-		{
-			filterCategories.add(new FilterCategory(category.getID(), category.getName(), false));
-		}
-
-		FilterConfiguration filterConfiguration = new FilterConfiguration();
-		filterConfiguration.setIncludeIncome(true);
-		filterConfiguration.setIncludeExpenditure(true);
-		filterConfiguration.setIncludeNotRepeating(true);
-		filterConfiguration.setIncludeRepeating(true);
-		filterConfiguration.setFilterCategories(filterCategories);
-
+		FilterConfiguration filterConfiguration = FilterConfiguration.DEFAULT;
+		filterConfiguration.setFilterCategories(getFilterCategories());
 		model.addAttribute("filterConfiguration", filterConfiguration);
 		return "filter/filter";
 	}
@@ -63,4 +47,25 @@ public class FilterController extends BaseController
 		System.out.println(filterConfiguration);
 		return "redirect:/filter";
 	}
+
+	@RequestMapping("/filter/reset")
+	public String reset(Model model)
+	{
+		FilterConfiguration filterConfiguration = FilterConfiguration.DEFAULT;
+		filterConfiguration.setFilterCategories(getFilterCategories());
+		model.addAttribute("filterConfiguration", filterConfiguration);
+		return "filter/filter";
+	}
+
+	private List<FilterCategory> getFilterCategories()
+	{
+		List<Category> categories = categoryService.getRepository().findAllByOrderByNameAsc();
+		List<FilterCategory> filterCategories = new ArrayList<>();
+		for(Category category : categories)
+		{
+			filterCategories.add(new FilterCategory(category.getID(), category.getName(), false));
+		}
+
+		return filterCategories;
+	}
 }
\ No newline at end of file
diff --git a/src/main/java/de/deadlocker8/budgetmaster/filter/FilterConfiguration.java b/src/main/java/de/deadlocker8/budgetmaster/filter/FilterConfiguration.java
index 78544858d..8b72c1465 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/filter/FilterConfiguration.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/filter/FilterConfiguration.java
@@ -10,6 +10,8 @@ public class FilterConfiguration
 	private boolean includeRepeating;
 	private List<FilterCategory> filterCategories;
 
+	public static final FilterConfiguration DEFAULT = new FilterConfiguration(true, true, true, true, null);
+
 	public FilterConfiguration()
 	{
 	}
diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties
index 38f105e08..12570d3b5 100644
--- a/src/main/resources/languages/_de.properties
+++ b/src/main/resources/languages/_de.properties
@@ -241,6 +241,7 @@ report.budget.rest=Restbudget:
 # filter
 filter.active=Filter aktiv
 filter.apply=Filter anwenden
+filter.reset=Zur�cksetzen
 filter.type=Art
 filter.type.income=Einnahme
 filter.type.expenditure=Ausgabe
@@ -254,7 +255,6 @@ filter.name=Name
 filter.tags=Tags
 filter.tags.button.all=Alle
 filter.tags.button.none=Keine
-filter.button.reset=Zur�cksetzen
 
 # home menu
 home.menu.accounts=Konten erlauben es mehrere Buchungen zu gruppieren. Du kannst so viele Konten erstellen, wie du m�chtest. Zum Erstellen, Aktualisieren oder L�schen von Accounts klicke hier.
diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties
index 82d19573d..fecec8e63 100644
--- a/src/main/resources/languages/_en.properties
+++ b/src/main/resources/languages/_en.properties
@@ -240,6 +240,7 @@ report.budget.rest=Remaining Budget:
 # filter
 filter.active=Filter active
 filer.apply=Apply Filter
+filter.reset=Reset
 filter.type=Type
 filter.type.income=Income
 filter.type.expenditure=Expenditure
@@ -253,7 +254,6 @@ filter.name=Name
 filter.tags=Tags
 filter.tags.button.all=All
 filter.tags.button.none=None
-filter.button.reset=Reset
 
 # home menu
 home.menu.accounts=Accounts allow you to group multiple transactions. You can create as many accounts as you want. Create, update and delete them by clicking here.
diff --git a/src/main/resources/templates/filter/filter.ftl b/src/main/resources/templates/filter/filter.ftl
index 0f0e19f78..7e719d6c9 100644
--- a/src/main/resources/templates/filter/filter.ftl
+++ b/src/main/resources/templates/filter/filter.ftl
@@ -9,6 +9,9 @@
         <#import "../helpers/navbar.ftl" as navbar>
         <@navbar.navbar ""/>
 
+        <#import "filterMacros.ftl" as filterMacros>
+
+
         <main>
             <div class="card main-card background-color">
                 <div class="container">
@@ -93,14 +96,7 @@
                             </div>
                         </div>
 
-                        <#-- button save -->
-                        <div class="row valign-wrapper">
-                            <div class="col s12 center-align">
-                                <button class="btn waves-effect waves-light budgetmaster-blue" type="submit" name="buttonSave">
-                                    <i class="fas fa-filter left"></i>${locale.getString("filter.apply")}
-                                </button>
-                            </div>
-                        </div>
+                        <@filterMacros.buttons/>
                     </form>
                 </div>
             </div>
diff --git a/src/main/resources/templates/filter/filterMacros.ftl b/src/main/resources/templates/filter/filterMacros.ftl
new file mode 100644
index 000000000..ad2378042
--- /dev/null
+++ b/src/main/resources/templates/filter/filterMacros.ftl
@@ -0,0 +1,36 @@
+<#import "/spring.ftl" as s>
+
+<#macro buttons>
+    <div class="row hide-on-small-only valign-wrapper">
+        <div class="col s6 right-align">
+            <@buttonReset/>
+        </div>
+
+        <div class="col s6 left-align">
+            <@buttonApply/>
+        </div>
+    </div>
+
+    <div class="hide-on-med-and-up valign-wrapper">
+        <div class="row center-align">
+            <div class="col s12">
+                <@buttonReset/>
+            </div>
+        </div>
+        <div class="row center-align">
+            <div class="col s12">
+                <@buttonApply/>
+            </div>
+        </div>
+    </div>
+</#macro>
+
+<#macro buttonReset>
+    <a href="<@s.url '/filter/reset'/>" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">settings_backup_restore</i>${locale.getString("filter.reset")}</a>
+</#macro>
+
+<#macro buttonApply>
+    <button class="btn waves-effect waves-light budgetmaster-blue" type="submit" name="buttonSave">
+        <i class="fas fa-filter left"></i>${locale.getString("filter.apply")}
+    </button>
+</#macro>
-- 
GitLab