From 7e8420ab9d45aeb990f9a02eb4a058c4f5bc31d6 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sat, 28 Mar 2020 14:14:34 +0100 Subject: [PATCH] Fixed #338 - added basic pages to view and manage templates --- .../templates/TemplateController.java | 15 ++++++- src/main/resources/languages/_de.properties | 7 +++ src/main/resources/languages/_en.properties | 7 +++ src/main/resources/static/js/templates.js | 7 +++ .../resources/templates/templates/manage.ftl | 43 +++++++++++++++++++ .../templates/templates/templateFunctions.ftl | 33 ++++++++++++++ .../templates/templates/templates.ftl | 36 ++++++++++++++++ 7 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/static/js/templates.js create mode 100644 src/main/resources/templates/templates/templateFunctions.ftl create mode 100644 src/main/resources/templates/templates/templates.ftl diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java index d6ba0b6d1..0c4c176e6 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java @@ -1,5 +1,7 @@ package de.deadlocker8.budgetmaster.templates; +import de.deadlocker8.budgetmaster.charts.Chart; +import de.deadlocker8.budgetmaster.charts.ChartType; import de.deadlocker8.budgetmaster.controller.BaseController; import de.deadlocker8.budgetmaster.settings.SettingsService; import org.springframework.beans.factory.annotation.Autowired; @@ -7,6 +9,8 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import java.util.ArrayList; + @Controller public class TemplateController extends BaseController @@ -20,9 +24,18 @@ public class TemplateController extends BaseController } @GetMapping("/templates") - public String index(Model model) + public String showTemplates(Model model) + { + model.addAttribute("settings", settingsService.getSettings()); + model.addAttribute("templates", new ArrayList<>()); + return "templates/templates"; + } + + @GetMapping("/templates/manage") + public String manage(Model model) { model.addAttribute("settings", settingsService.getSettings()); + model.addAttribute("templates", new ArrayList<>()); return "templates/manage"; } } \ No newline at end of file diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index 2102c5c11..5c6db1ce6 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -50,6 +50,8 @@ title.filter=Filter title.charts=Diagramme title.chart.new=Neues Diagramm title.chart.edit=Diagramm bearbeiten +title.template.new=Neue Vorlage +title.template.edit=Vorlage bearbeiten # MISC category.none=Keine Kategorie @@ -101,6 +103,8 @@ info.text.transaction.delete=Möchtest du die Buchung "{0}" wirklich unwiderrufl info.text.transaction.repeating.delete=Möchtest du die Buchung "{0}" wirklich unwiderruflich löschen? <br>Hinweis: Es handelt sich um eine wiederholende Buchung. Beim Löschen dieser Buchung werden alle zugehörigen Wiederholungen ebenfalls gelöscht! info.title.chart.delete=Diagramm löschen info.text.chart.delete=Möchtest du das Diagramm "{0}" wirklich unwiderruflich löschen? +info.title.template.delete=Vorlage löschen +info.text.template.delete=Möchtest du die Vorlage "{0}" wirklich unwiderruflich löschen? info.title.database.delete=Datenbank löschen info.header.text.database.delete=Soll die Datenbank wirklich unwiderruflich gelöscht werden?<br>Hinweis: Beim Löschen der Datenbank werden alle Buchungen, Kategorien und Konten unwiderruflich gelöscht. @@ -313,6 +317,9 @@ home.menu.transactions=Buchungen sind das zentrale Element von BudgetMaster. Gib home.menu.transactions.action.manage=Buchungsverwaltung home.menu.transactions.action.new=Neue Buchung anlegen +home.menu.templates.action.manage=Vorlagenverwaltung +home.menu.templates.action.show=Vorlagen ansehen + home.menu.charts=Visualisiere deine Daten in verschiedenen Diagrammen. Nutze die mitgelieferten Diagrammtypen oder definiere deine eigenen Diagramme. home.menu.charts.action.manage=Diagrammverwaltung home.menu.charts.action.show=Diagramme ansehen diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index b3c0e3a03..d09dd8cb0 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -50,6 +50,8 @@ title.filter=Filter title.charts=Charts title.chart.new=New Chart title.chart.edit=Edit Chart +title.template.new=New Template +title.template.edit=Edit Template # MISC category.none=No Category @@ -101,6 +103,8 @@ info.text.transaction.delete=Do you really want to delete the entry "{0}"? This info.text.transaction.repeating.delete=Do you really want to delete the entry "{0}"? This can''t be undone.<br>Note: This transaction is a repeating transaction. Deleting this transaction will delete all related occurrences too! info.title.chart.delete=Delete Chart info.text.chart.delete=Do you really want to delete the chart "{0}"? +info.title.template.delete=Delete Template +info.text.template.delete=Do you really want to delete the template "{0}"? info.title.database.delete=Delete Database info.header.text.database.delete=Do you really want to delete the database? This can''t be undone.<br>Note: Deleting the database will delete all transactions, categories and accounts permanently. @@ -313,6 +317,9 @@ home.menu.transactions=Transactions are the key element of BudgetMaster. Give th home.menu.transactions.action.manage=Manage transactions home.menu.transactions.action.new=Create a transaction +home.menu.templates.action.manage=Manage templates +home.menu.templates.action.show=Show templates + home.menu.charts=Visualize your data by using charts. You can choose an included default chart or define your own. home.menu.charts.action.manage=Manage charts home.menu.charts.action.show=Show charts diff --git a/src/main/resources/static/js/templates.js b/src/main/resources/static/js/templates.js new file mode 100644 index 000000000..155f140df --- /dev/null +++ b/src/main/resources/static/js/templates.js @@ -0,0 +1,7 @@ +$(document).ready(function() +{ + if($("#modalConfirmDelete").length) + { + $('#modalConfirmDelete').modal('open'); + } +}); \ No newline at end of file diff --git a/src/main/resources/templates/templates/manage.ftl b/src/main/resources/templates/templates/manage.ftl index a5d670871..2d91051a4 100644 --- a/src/main/resources/templates/templates/manage.ftl +++ b/src/main/resources/templates/templates/manage.ftl @@ -8,6 +8,8 @@ <#import "../helpers/navbar.ftl" as navbar> <@navbar.navbar "templates" settings/> + <#import "templateFunctions.ftl" as templateFunctions> + <main> <div class="card main-card background-color"> <div class="container"> @@ -15,10 +17,51 @@ <div class="headline">${locale.getString("menu.templates")}</div> </div> </div> + <br> + <@templateFunctions.buttons/> + <br> + <div class="container"> + <#if templates?size == 0> + <div class="headline center-align">${locale.getString("placeholder")}</div> + <#else> + <table class="bordered"> + <thead> + <tr> + <th>${locale.getString("chart.new.label.name")}</th> + <th>${locale.getString("chart.actions")}</th> + </tr> + </thead> + <#list templates as template> + <tr> + <td>${template.getName()}</td> + <td> + <a href="<@s.url '/templates/${template.ID?c}/edit'/>" class="btn-flat no-padding text-color"><i class="material-icons left">edit</i></a> + <a href="<@s.url '/templates/${template.ID?c}/requestDelete'/>" class="btn-flat no-padding text-color"><i class="material-icons left">delete</i></a> + </td> + </tr> + </#list> + </table> + </#if> + </div> </div> + + <#if currentTemplate??> + <!-- confirm delete modal --> + <div id="modalConfirmDelete" class="modal background-color"> + <div class="modal-content"> + <h4>${locale.getString("info.title.template.delete")}</h4> + <p>${locale.getString("info.text.template.delete", currentTemplate.getName())}</p> + </div> + <div class="modal-footer background-color"> + <a href="<@s.url '/templates/manage'/>" class="modal-action modal-close waves-effect waves-light red btn-flat white-text">${locale.getString("cancel")}</a> + <a href="<@s.url '/templates/${currentTemplate.getID()?c}/delete'/>" class="modal-action modal-close waves-effect waves-light green btn-flat white-text">${locale.getString("info.title.template.delete")}</a> + </div> + </div> + </#if> </main> <#import "../helpers/scripts.ftl" as scripts> <@scripts.scripts/> + <script src="<@s.url '/js/templates.js'/>"></script> </body> </html> \ No newline at end of file diff --git a/src/main/resources/templates/templates/templateFunctions.ftl b/src/main/resources/templates/templates/templateFunctions.ftl new file mode 100644 index 000000000..c022a1599 --- /dev/null +++ b/src/main/resources/templates/templates/templateFunctions.ftl @@ -0,0 +1,33 @@ +<#import "/spring.ftl" as s> + +<#macro buttonNew> + <a href="<@s.url '/templates/newTemplate'/>" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">add</i>${locale.getString("title.template.new")}</a> +</#macro> + +<#macro buttonShow> + <a href="<@s.url '/templates'/>" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">file_copy</i>${locale.getString("home.menu.templates.action.show")}</a> +</#macro> + +<#macro buttons> + <div class="row hide-on-small-only valign-wrapper"> + <div class="col s6 right-align"> + <@buttonNew/> + </div> + <div class="col s6 left-align"> + <@buttonShow/> + </div> + </div> + + <div class="hide-on-med-and-up center-align"> + <div class="row center-align"> + <div class="row center-align"> + <div class="col s12"> + <@buttonShow/> + </div> + </div> + <div class="col s12"> + <@buttonNew/> + </div> + </div> + </div> +</#macro> \ No newline at end of file diff --git a/src/main/resources/templates/templates/templates.ftl b/src/main/resources/templates/templates/templates.ftl new file mode 100644 index 000000000..66b14c203 --- /dev/null +++ b/src/main/resources/templates/templates/templates.ftl @@ -0,0 +1,36 @@ +<html> + <head> + <#import "../helpers/header.ftl" as header> + <@header.header "BudgetMaster"/> + <#import "/spring.ftl" as s> + </head> + <body class="budgetmaster-blue-light"> + <#import "../helpers/navbar.ftl" as navbar> + <@navbar.navbar "templates" settings/> + + <#import "templateFunctions.ftl" as templateFunctions> + + <main> + <div class="card main-card background-color"> + <div class="container"> + <div class="section center-align"> + <div class="headline">${locale.getString("menu.templates")}</div> + </div> + </div> + <br> + <div class="center-align"><a href="<@s.url '/templates/manage'/>" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">edit</i>${locale.getString("home.menu.templates.action.manage")}</a></div> + <br> + <div class="container"> + <#if templates?size == 0> + <div class="headline center-align">${locale.getString("placeholder")}</div> + <#else> + </#if> + </div> + </div> + </main> + + <#import "../helpers/scripts.ftl" as scripts> + <@scripts.scripts/> + <script src="<@s.url '/js/templates.js'/>"></script> + </body> +</html> \ No newline at end of file -- GitLab