From 90df17b34fb56b6d985881a0431eb5ae29536ced Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 16 Feb 2019 13:50:23 +0100
Subject: [PATCH] #293 - added button "filter" to transaction page; Fixed
 transaction meta class

---
 .../entities/transaction/Transaction_.java    |  3 +-
 src/main/resources/languages/_de.properties   |  4 ++
 src/main/resources/languages/_en.properties   |  4 ++
 .../templates/transactions/transactions.ftl   |  6 +--
 .../transactions/transactionsMacros.ftl       | 37 +++++++++++++++++++
 5 files changed, 49 insertions(+), 5 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/Transaction_.java b/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/Transaction_.java
index 2a8a1cccf..311580ba5 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/Transaction_.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/Transaction_.java
@@ -6,6 +6,7 @@ import de.deadlocker8.budgetmaster.entities.category.Category;
 import de.deadlocker8.budgetmaster.repeating.RepeatingOption;
 import org.joda.time.DateTime;
 
+import javax.persistence.metamodel.ListAttribute;
 import javax.persistence.metamodel.SingularAttribute;
 import javax.persistence.metamodel.StaticMetamodel;
 import java.util.List;
@@ -20,6 +21,6 @@ public class Transaction_
 	public static volatile SingularAttribute<Transaction, Category> category;
 	public static volatile SingularAttribute<Transaction, String> name;
 	public static volatile SingularAttribute<Transaction, String> description;
-	public static volatile SingularAttribute<Transaction, List<Tag>> tags;
+	public static volatile ListAttribute<Transaction, List<Tag>> tags;
 	public static volatile SingularAttribute<Transaction, RepeatingOption> repeatingOption;
 }
diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties
index 48ef1dfe6..e6f25bd9d 100644
--- a/src/main/resources/languages/_de.properties
+++ b/src/main/resources/languages/_de.properties
@@ -37,6 +37,7 @@ title.datepicker.month=Monat w
 title.account.new=Neues Konto
 title.account.edit=Konto bearbeiten
 title.category.budgets=Verbrauch nach Kategorien
+title.filter=Filter
 
 # MISC
 category.none=Keine Kategorie
@@ -237,6 +238,9 @@ report.incomes=Einnahmen:
 report.expenditures=Ausgaben: 
 report.budget.rest=Restbudget: 
 
+# filter
+filter.active=Filter aktiv
+
 # 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.
 home.menu.transactions=Buchungen sind das zentrale Element von BudgetMaster. Gib ihnen einen Namen und eine Beschreibung, weise ihnen eine Kategorie und ein Konto zu, konfiguriere sie als wiederholend und markiere sie mit Tags. Um Buchungen zu erstellen, zu bearbeiten oder zu l�schen einfach hier klicken.
diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties
index 43abb2edd..8b944f716 100644
--- a/src/main/resources/languages/_en.properties
+++ b/src/main/resources/languages/_en.properties
@@ -37,6 +37,7 @@ title.datepicker.month=Choose month
 title.account.new=New Account
 title.account.edit=Edit Account
 title.category.budgets=Consumption by categories
+title.filter=Filter
 
 # MISC
 category.none=No Category
@@ -236,6 +237,9 @@ report.incomes=Incomes:
 report.expenditures=Expenditures: 
 report.budget.rest=Remaining Budget: 
 
+# filter
+filter.active=Filter active
+
 # 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.
 home.menu.transactions=Transactions are the key element of BudgetMaster. Give them a name and description, assign a category and account to them, configure them as recurring, and mark them with tags. You can create, edit and delete them by clicking here.
diff --git a/src/main/resources/templates/transactions/transactions.ftl b/src/main/resources/templates/transactions/transactions.ftl
index 4c71b09a3..c72510426 100644
--- a/src/main/resources/templates/transactions/transactions.ftl
+++ b/src/main/resources/templates/transactions/transactions.ftl
@@ -41,10 +41,8 @@
                         </div>
                     </div>
 
-                    <#-- button new -->
-                    <div class="row valign-wrapper">
-                        <div class="col s12 center-align"><a href="<@s.url '/transactions/newTransaction'/>" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">add</i>${locale.getString("title.transaction.new")}</a></div>
-                    </div>
+                    <#-- buttons -->
+                    <@transactionsMacros.buttons true/>
 
                     <#-- transactions list -->
                     <br>
diff --git a/src/main/resources/templates/transactions/transactionsMacros.ftl b/src/main/resources/templates/transactions/transactionsMacros.ftl
index c90f3e9e2..87bc28188 100644
--- a/src/main/resources/templates/transactions/transactionsMacros.ftl
+++ b/src/main/resources/templates/transactions/transactionsMacros.ftl
@@ -73,4 +73,41 @@
             <a href="<@s.url '/transactions/${transaction.ID?c}/delete'/>" class="modal-action modal-close waves-effectwaves-light green btn-flat white-text">${locale.getString("delete")}</a>
         </div>
     </div>
+</#macro>
+
+<#macro buttons isFilterActive>
+    <div class="row hide-on-small-only valign-wrapper">
+        <div class="col s6 right-align">
+            <@buttonNew/>
+        </div>
+
+        <div class="col s6 left-align">
+            <@buttonFilter isFilterActive/>
+        </div>
+    </div>
+
+    <div class="hide-on-med-and-up valign-wrapper">
+        <div class="row center-align">
+            <div class="col s12">
+                <@buttonNew/>
+            </div>
+        </div>
+        <div class="row center-align">
+            <div class="col s12">
+                <@buttonFilter isFilterActive/>
+            </div>
+        </div>
+    </div>
+</#macro>
+
+<#macro buttonNew>
+    <a href="<@s.url '/transactions/newTransaction'/>" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">add</i>${locale.getString("title.transaction.new")}</a>
+</#macro>
+
+<#macro buttonFilter isFilterActive>
+    <#if isFilterActive>
+        <a href="<@s.url '/filter'/>" class="waves-effect waves-light btn budgetmaster-red"><i class="fas fa-filter left"></i>${locale.getString("filter.active")}</a>
+    <#else>
+        <a href="<@s.url '/filter'/>" class="waves-effect waves-light btn budgetmaster-blue"><i class="fas fa-filter left"></i>${locale.getString("title.filter")}</a>
+    </#if>
 </#macro>
\ No newline at end of file
-- 
GitLab