Move content to subfolder to prepare for merge with -parent repository

This commit is contained in:
2019-06-20 14:38:20 +02:00
parent 0d16aa7c0a
commit 7a8865bdf1
53 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
# Hibernate
spring.jpa.show-sql=true
financer.serverUrl=http://localhost:8089/financer-server/

View File

@@ -0,0 +1,30 @@
###
### This is the main configuration file of the application.
### Filtering of the @...@ values happens via the maven-resource-plugin. The execution of the plugin is configured in
### the Spring Boot parent POM.
spring.profiles.active=@activeProfiles@
# This properties are just for the embedded Tomcat used while developing
# In a standalone servlet container instance the context path is usually defined by the name
# of the .war file. See property 'finalName' in the POM for more info.
server.servlet.context-path=/financer-web-client
server.port=8090
info.app.name=Financer Web Client
info.app.description=A web interface for the financer server application
info.build.group=@project.groupId@
info.build.artifact=@project.artifactId@
info.build.version=@project.version@
logging.level.de.financer=DEBUG
logging.file=financer-web-client.log
logging.file.max-history=7
logging.file.max-size=50MB
# The date format of the client-supplied date string, used to parse the string into a proper object
financer.dateFormat=dd.MM.yyyy
financer.version=@project.version@
financer.serverUrl=http://localhost:8080/financer-server/
spring.messages.basename=i18n/message

View File

@@ -0,0 +1,159 @@
financer.account-overview.title=financer\: overview
financer.account-overview.available-actions=Available actions\:
financer.account-overview.available-actions.show-closed=Show closed accounts
financer.account-overview.available-actions.hide-closed=Hide closed accounts
financer.account-overview.available-actions.create-account=Create new account
financer.account-overview.available-actions.create-transaction=Create new transaction
financer.account-overview.available-actions.create-recurring-transaction=Create new recurring transaction
financer.account-overview.available-actions.recurring-transaction-all=Show all recurring transactions
financer.account-overview.available-actions.create-account-group=Create new account group
financer.account-overview.status=Status\:
financer.account-overview.status.recurring-transaction-due-today=Recurring transactions due today\:
financer.account-overview.status.recurring-transaction-active=Active recurring transactions\:
financer.account-overview.table-header.id=ID
financer.account-overview.table-header.key=Account
financer.account-overview.table-header.group=Group
financer.account-overview.table-header.balance=Current Balance
financer.account-overview.table-header.type=Type
financer.account-overview.table-header.status=Status
financer.account-new.title=financer\: create new account
financer.account-new.label.key=Key\:
financer.account-new.label.type=Type\:
financer.account-new.label.group=Group\:
financer.account-new.submit=Create account
financer.account-group-new.title=financer\: create new account group
financer.account-group-new.label.name=Name\:
financer.account-group-new.submit=Create account group
financer.transaction-new.title=financer\: create new transaction
financer.transaction-new.label.from-account=From account\:
financer.transaction-new.label.to-account=To account\:
financer.transaction-new.label.amount=Amount\:
financer.transaction-new.label.date=Date\:
financer.transaction-new.label.description=Description\:
financer.transaction-new.submit=Create transaction
financer.transaction-new.account-type.BANK={0}|Bank|{1}
financer.transaction-new.account-type.CASH={0}|Cash|{1}
financer.transaction-new.account-type.INCOME={0}|Income|{1}
financer.transaction-new.account-type.LIABILITY={0}|Liability|{1}
financer.transaction-new.account-type.EXPENSE={0}|Expense|{1}
financer.transaction-new.account-type.START={0}|Start|{1}
financer.recurring-transaction-new.title=financer\: create new recurring transaction
financer.recurring-transaction-new.label.from-account=From account\:
financer.recurring-transaction-new.label.to-account=To account\:
financer.recurring-transaction-new.label.amount=Amount\:
financer.recurring-transaction-new.label.first-occurrence=First occurrence\:
financer.recurring-transaction-new.label.last-occurrence=Last occurrence\:
financer.recurring-transaction-new.label.interval-type=Interval\:
financer.recurring-transaction-new.label.holiday-weekend-type=Holiday/weekend rule\:
financer.recurring-transaction-new.label.description=Description\:
financer.recurring-transaction-new.label.remind=Remind if due\:
financer.recurring-transaction-new.submit=Create recurring transaction
financer.recurring-transaction-new.account-type.BANK={0}|Bank|{1}
financer.recurring-transaction-new.account-type.CASH={0}|Cash|{1}
financer.recurring-transaction-new.account-type.INCOME={0}|Income|{1}
financer.recurring-transaction-new.account-type.LIABILITY={0}|Liability|{1}
financer.recurring-transaction-new.account-type.EXPENSE={0}|Expense|{1}
financer.recurring-transaction-new.account-type.START={0}|Start|{1}
financer.recurring-transaction-list.title.dueToday=financer\: recurring transactions due today
financer.recurring-transaction-list.title.active=financer\: active recurring transactions
financer.recurring-transaction-list.title.all=financer\: all recurring transaction
financer.recurring-transaction-list.table-header.id=ID
financer.recurring-transaction-list.table-header.fromAccount=From account
financer.recurring-transaction-list.table-header.toAccount=To account
financer.recurring-transaction-list.table-header.firstOccurrence=First occurrence
financer.recurring-transaction-list.table-header.lastOccurrence=Last occurrence
financer.recurring-transaction-list.table-header.amount=Amount
financer.recurring-transaction-list.table-header.description=Description
financer.recurring-transaction-list.table-header.intervalType=Interval
financer.recurring-transaction-list.table-header.holidayWeekendType=Holiday/weekend rule
financer.recurring-transaction-list.table-header.actions=Actions
financer.recurring-transaction-list.table.actions.createTransaction=Create transaction
financer.recurring-transaction-list.table.actions.createTransactionWithAmount=Create transaction with amount
financer.recurring-transaction-list.table.actions.editRecurringTransaction=Edit
financer.recurring-transaction-list.table.actions.deleteRecurringTransaction=Delete
financer.account-details.title=financer\: account details
financer.account-details.available-actions=Available actions\:
financer.account-details.available-actions.close-account=Close account
financer.account-details.available-actions.open-account=Open account
financer.account-details.available-actions.back-to-overview=Back to overview
financer.account-details.table-header.id=ID
financer.account-details.table-header.fromAccount=From account
financer.account-details.table-header.toAccount=To account
financer.account-details.table-header.date=Date
financer.account-details.table-header.amount=Amount
financer.account-details.table-header.description=Description
financer.account-details.table-header.byRecurring=Recurring?
financer.account-details.details.type=Type\:
financer.account-details.details.balance=Current balance\:
financer.account-details.details.group=Group\:
financer.account-details.table-header.actions=Actions
financer.account-details.table.actions.deleteTransaction=Delete
financer.recurring-to-transaction-with-amount.title=financer\: create transaction from recurring with amount
financer.recurring-to-transaction-with-amount.label.amount=Amount\:
financer.recurring-to-transaction-with-amount.submit=Create
financer.interval-type.DAILY=Daily
financer.interval-type.WEEKLY=Weekly
financer.interval-type.MONTHLY=Monthly
financer.interval-type.QUARTERLY=Quarterly
financer.interval-type.YEARLY=Yearly
financer.holiday-weekend-type.SAME_DAY=Same day
financer.holiday-weekend-type.NEXT_WORKDAY=Next workday
financer.holiday-weekend-type.PREVIOUS_WORKDAY=Previous workday
financer.account-type.BANK=Bank
financer.account-type.CASH=Cash
financer.account-type.INCOME=Income
financer.account-type.LIABILITY=Liability
financer.account-type.EXPENSE=Expense
financer.account-type.START=Start
financer.account-status.OPEN=Open
financer.account-status.CLOSED=Closed
financer.heading.transaction-new=financer\: create new transaction
financer.heading.recurring-transaction-new=financer\: create new recurring transaction
financer.heading.account-new=financer\: create new account
financer.heading.account-group-new=financer\: create new account group
financer.heading.account-overview=financer\: overview
financer.heading.account-details=financer\: account details for {0}
financer.heading.recurring-transaction-list.dueToday=financer\: recurring transactions due today
financer.heading.recurring-transaction-list.active=financer\: active recurring transactions
financer.heading.recurring-transaction-list.all=financer\: all recurring transaction
financer.heading.recurring-to-transaction-with-amount=financer\: create transaction from recurring with amount
financer.error-message.UNKNOWN_ERROR=An unknown error occurred!
financer.error-message.INVALID_ACCOUNT_TYPE=The selected account type is not valid!
financer.error-message.FROM_ACCOUNT_NOT_FOUND=The specified from account has not been found!
financer.error-message.TO_ACCOUNT_NOT_FOUND=The specified to account has not been found!
financer.error-message.FROM_AND_TO_ACCOUNT_NOT_FOUND=Neither from nor to have not been found!
financer.error-message.INVALID_DATE_FORMAT=The date entered has the wrong format!
financer.error-message.MISSING_DATE=No date entered!
financer.error-message.AMOUNT_ZERO=Zero is not a valid booking amount!
financer.error-message.MISSING_AMOUNT=No amount entered!
financer.error-message.INVALID_BOOKING_ACCOUNTS=The booking is not valid! No booking allowed from the from account type to the to account type!
financer.error-message.MISSING_HOLIDAY_WEEKEND_TYPE=No holiday weekend type entered!
financer.error-message.INVALID_HOLIDAY_WEEKEND_TYPE=The holiday weekend type is not valid!
financer.error-message.MISSING_INTERVAL_TYPE=No interval type entered!
financer.error-message.INVALID_INTERVAL_TYPE=The interval type is not valid!
financer.error-message.MISSING_FIRST_OCCURRENCE=No first occurrence entered!
financer.error-message.INVALID_FIRST_OCCURRENCE_FORMAT=The date format of the first occurrence is invalid!
financer.error-message.INVALID_LAST_OCCURRENCE_FORMAT=The date format of the last occurrence is invalid!
financer.error-message.MISSING_RECURRING_TRANSACTION_ID=No recurring transaction entered!
financer.error-message.INVALID_RECURRING_TRANSACTION_ID=The recurring transaction is not valid!
financer.error-message.RECURRING_TRANSACTION_NOT_FOUND=The recurring transaction could not be found!
financer.error-message.MISSING_TRANSACTION_ID=No transaction entered!
financer.error-message.INVALID_TRANSACTION_ID=The transaction is not valid!
financer.error-message.TRANSACTION_NOT_FOUND=The transaction could not be found!
financer.error-message.ACCOUNT_NOT_FOUND=The account could not be found!
financer.error-message.DUPLICATE_ACCOUNT_KEY=An account with the given key already exists!
financer.error-message.DUPLICATE_ACCOUNT_GROUP_NAME=An account group with the given key already exists!
financer.error-message.ACCOUNT_GROUP_NOT_FOUND=The account group could not be found!

View File

@@ -0,0 +1,131 @@
financer.account-overview.title=financer\: \u00DCbersicht
financer.account-overview.available-actions=Verf\u00FCgbare Aktionen\:
financer.account-overview.available-actions.show-closed=Zeige auch geschlossene Konten
financer.account-overview.available-actions.hide-closed=Verstecke geschlossene Konten
financer.account-overview.available-actions.create-account=Neues Konto erstellen
financer.account-overview.available-actions.create-transaction=Neue Buchung erstellen
financer.account-overview.available-actions.create-recurring-transaction=Neue wiederkehrende Buchung erstellen
financer.account-overview.available-actions.recurring-transaction-all=Zeige alle wiederkehrende Buchungen
financer.account-overview.available-actions.create-account-group=Neue Konto-Gruppe erstellen
financer.account-overview.status=Status\:
financer.account-overview.status.recurring-transaction-due-today=Wiederkehrende Buchungen heute f\u00E4llig\:
financer.account-overview.status.recurring-transaction-active=Aktive wiederkehrende Buchungen\:
financer.account-overview.table-header.id=ID
financer.account-overview.table-header.key=Konto
financer.account-overview.table-header.group=Gruppe
financer.account-overview.table-header.balance=Kontostand
financer.account-overview.table-header.type=Typ
financer.account-overview.table-header.status=Status
financer.account-new.title=financer\: Neues Konto erstellen
financer.account-new.label.key=Schl\u00FCssel\:
financer.account-new.label.type=Typ\:
financer.account-new.label.group=Gruppe\:
financer.account-new.submit=Konto erstellen
financer.account-group-new.title=financer\: Neue Konto-Gruppe erstellen
financer.account-group-new.label.name=Name\:
financer.account-group-new.submit=Konto-Gruppe erstellen
financer.transaction-new.title=financer\: Neue Buchung erstellen
financer.transaction-new.label.from-account=Von Konto\:
financer.transaction-new.label.to-account=An Konto\:
financer.transaction-new.label.amount=Betrag\:
financer.transaction-new.label.date=Datum\:
financer.transaction-new.label.description=Beschreibung\:
financer.transaction-new.submit=Buchung erstellen
financer.transaction-new.account-type.BANK={0}|Bank|{1}
financer.transaction-new.account-type.CASH={0}|Bar|{1}
financer.transaction-new.account-type.INCOME={0}|Einkommen|{1}
financer.transaction-new.account-type.LIABILITY={0}|Verbindlichkeit|{1}
financer.transaction-new.account-type.EXPENSE={0}|Aufwand|{1}
financer.transaction-new.account-type.START={0}|Anfangsbestand|{1}
financer.recurring-transaction-new.title=financer\: Neue wiederkehrende Buchung erstellen
financer.recurring-transaction-new.label.from-account=Von Konto\:
financer.recurring-transaction-new.label.to-account=An Konto\:
financer.recurring-transaction-new.label.amount=Betrag\:
financer.recurring-transaction-new.label.first-occurrence=Erstes Auftreten\:
financer.recurring-transaction-new.label.last-occurrence=Letztes Auftreten\:
financer.recurring-transaction-new.label.interval-type=Intervall\:
financer.recurring-transaction-new.label.holiday-weekend-type=Feiertag-/Wochenendregel\:
financer.recurring-transaction-new.label.description=Beschreibung\:
financer.recurring-transaction-new.label.remind=Erinnern wenn f\u00E4llig\:
financer.recurring-transaction-new.submit=Wiederkehrende Buchung erstellen
financer.recurring-transaction-new.account-type.BANK={0}|Bank|{1}
financer.recurring-transaction-new.account-type.CASH={0}|Bar|{1}
financer.recurring-transaction-new.account-type.INCOME={0}|Einkommen|{1}
financer.recurring-transaction-new.account-type.LIABILITY={0}|Verbindlichkeit|{1}
financer.recurring-transaction-new.account-type.EXPENSE={0}|Aufwand|{1}
financer.recurring-transaction-new.account-type.START={0}|Anfangsbestand|{1}
financer.recurring-transaction-list.title.dueToday=financer\: wiederkehrende Buchungen heute f\u00E4llig
financer.recurring-transaction-list.title.active=financer\: aktive wiederkehrende Buchungen
financer.recurring-transaction-list.title.all=financer\: alle wiederkehrende Buchungen
financer.recurring-transaction-list.table-header.id=ID
financer.recurring-transaction-list.table-header.fromAccount=Von Konto
financer.recurring-transaction-list.table-header.toAccount=An Konto
financer.recurring-transaction-list.table-header.firstOccurrence=Erstes Auftreten
financer.recurring-transaction-list.table-header.lastOccurrence=Letztes Auftreten
financer.recurring-transaction-list.table-header.amount=Betrag
financer.recurring-transaction-list.table-header.description=Beschreibung
financer.recurring-transaction-list.table-header.intervalType=Intervall
financer.recurring-transaction-list.table-header.holidayWeekendType=Feiertag-/Wochenendregel
financer.recurring-transaction-list.table-header.actions=Aktionen
financer.recurring-transaction-list.table.actions.createTransaction=Erstelle Buchung
financer.recurring-transaction-list.table.actions.createTransactionWithAmount=Erstelle Buchung mit Betrag
financer.recurring-transaction-list.table.actions.editRecurringTransaction=Bearbeiten
financer.recurring-transaction-list.table.actions.deleteRecurringTransaction=L\u00F6schen
financer.account-details.title=financer\: Kontodetails
financer.account-details.available-actions=Verf\u00FCgbare Aktionen\:
financer.account-details.available-actions.close-account=Konto schlie\u00DFen
financer.account-details.available-actions.open-account=Konto \u00F6ffnen
financer.account-details.available-actions.back-to-overview=Zur\u00FCck zur \u00DCbersicht
financer.account-details.table-header.id=ID
financer.account-details.table-header.fromAccount=Von Konto
financer.account-details.table-header.toAccount=An Konto
financer.account-details.table-header.date=Datum
financer.account-details.table-header.amount=Betrag
financer.account-details.table-header.description=Beschreibung
financer.account-details.table-header.byRecurring=Wiederkehrend?
financer.account-details.details.type=Typ\:
financer.account-details.details.balance=Kontostand\:
financer.account-details.details.group=Gruppe\:
financer.account-details.table-header.actions=Aktionen
financer.account-details.table.actions.deleteTransaction=L\u00F6schen
financer.recurring-to-transaction-with-amount.title=financer\: Buchung mit Betrag aus wiederkehrender Buchung erstellen
financer.recurring-to-transaction-with-amount.label.amount=Betrag\:
financer.recurring-to-transaction-with-amount.submit=Erstellen
financer.interval-type.DAILY=T\u00E4glich
financer.interval-type.WEEKLY=W\u00F6chentlich
financer.interval-type.MONTHLY=Monatlich
financer.interval-type.QUARTERLY=Viertelj\u00E4hrlich
financer.interval-type.YEARLY=J\u00E4hrlich
financer.holiday-weekend-type.SAME_DAY=Gleicher Tag
financer.holiday-weekend-type.NEXT_WORKDAY=N\u00E4chster Werktag
financer.holiday-weekend-type.PREVIOUS_WORKDAY=Vorheriger Werktag
financer.account-type.BANK=Bank
financer.account-type.CASH=Bar
financer.account-type.INCOME=Einkommen
financer.account-type.LIABILITY=Verbindlichkeit
financer.account-type.EXPENSE=Aufwand
financer.account-type.START=Anfangsbestand
financer.account-status.OPEN=Offen
financer.account-status.CLOSED=Geschlossen
financer.heading.transaction-new=financer\: Neue Buchung erstellen
financer.heading.recurring-transaction-new=financer\: Neue wiederkehrende Buchung erstellen
financer.heading.account-new=financer\: Neues Konto erstellen
financer.heading.account-group-new=financer\: Neue Konto-Gruppe erstellen
financer.heading.account-overview=financer\: \u00DCbersicht
financer.heading.account-details=financer\: Kontodetails f\u00FCr {0}
financer.heading.recurring-transaction-list.dueToday=financer\: wiederkehrende Buchungen heute f\u00E4llig
financer.heading.recurring-transaction-list.active=financer\: aktive wiederkehrende Buchungen
financer.heading.recurring-transaction-list.all=financer\: alle wiederkehrende Buchungen
financer.heading.recurring-to-transaction-with-amount=financer\: Buchung mit Betrag aus wiederkehrender Buchung erstellen

View File

@@ -0,0 +1,93 @@
#account-overview-table,
#account-transaction-table,
#recurring-transaction-list-table {
width: 100%;
border-collapse: collapse;
text-align: left;
margin-top: 1.5em;
margin-bottom: 1.5em;
}
#account-overview-table th,
#account-overview-table td,
#account-transaction-table th,
#account-transaction-table td,
#recurring-transaction-list-table th,
#recurring-transaction-list-table td {
border-bottom: 1px solid #ddd;
padding: 0.3em;
vertical-align: top;
}
tr:hover {
background-color: lightgrey;
}
@media only screen and (max-width: 450px) {
.hideable-column {
display: none;
}
#new-account-form *,
#new-transaction-form *,
#new-recurring-transaction-form * {
width: 100% !important;
}
#action-container * {
display: block !important;
margin-bottom: 0.1em;
}
}
#action-container * {
display: inline-grid;
padding-inline-end: 1em;
margin-bottom: 0.2em;
}
#account-details-action-container *,
#recurring-transaction-list-table-actions-container *,
#account-transaction-table-actions-container * {
display: block;
}
#details-container,
#status-container {
margin-bottom: 1em;
}
#status-container > span, div {
display: block;
}
#details-container > div {
display: block;
}
#new-account-form *,
#new-transaction-form *,
#new-recurring-transaction-form *,
#recurring-to-transaction-with-amount-form *,
#new-account-group-form * {
display: block;
margin-top: 1em;
width: 20em;
box-sizing: border-box;
}
#footer-container * {
display: block;
}
#footer-container > hr {
width: 100%;
}
#footer-container > span {
text-align: center;
font-size: 0.9em;
}
.errorMessage {
color: #ff6666;
display: block;
}

View File

@@ -0,0 +1,64 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="#{financer.account-details.title}"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" th:href="@{/css/main.css}">
</head>
<body>
<h1 th:text="#{financer.heading.account-details(${account.key})}" />
<span class="errorMessage" th:if="${errorMessage != null}" th:text="#{'financer.error-message.' + ${errorMessage}}"/>
<div id="details-container">
<div id="type-container">
<span th:text="#{financer.account-details.details.type}"/>
<span th:text="#{'financer.account-type.' + ${account.type}}"/>
</div>
<div id="balance-container">
<span th:text="#{financer.account-details.details.balance}"/>
<span th:text="${#numbers.formatDecimal(account.currentBalance/100D, 1, 'DEFAULT', 2, 'DEFAULT')}"/>
</div>
<div id="group-container">
<span th:text="#{financer.account-details.details.group}"/>
<span th:text="${account.accountGroup?.name}"/>
</div>
</div>
<div id="account-details-action-container">
<span th:text="#{financer.account-details.available-actions}"/>
<a th:if="${!isClosed}" th:href="@{/closeAccount(key=${account.key})}"
th:text="#{financer.account-details.available-actions.close-account}"/>
<a th:if="${isClosed}" th:href="@{/openAccount(key=${account.key})}"
th:text="#{financer.account-details.available-actions.open-account}"/>
<a th:href="@{/accountOverview}"
th:text="#{financer.account-details.available-actions.back-to-overview}"/>
</div>
<table id="account-transaction-table">
<tr>
<th class="hideable-column" th:text="#{financer.account-details.table-header.id}"/>
<th th:text="#{financer.account-details.table-header.fromAccount}"/>
<th th:text="#{financer.account-details.table-header.toAccount}"/>
<th th:text="#{financer.account-details.table-header.date}"/>
<th th:text="#{financer.account-details.table-header.amount}"/>
<th th:text="#{financer.account-details.table-header.description}"/>
<th th:text="#{financer.account-details.table-header.byRecurring}"/>
<th th:text="#{financer.account-details.table-header.actions}"/>
</tr>
<tr th:each="transaction : ${transactions}">
<td class="hideable-column" th:text="${transaction.id}"/>
<td th:text="${transaction.fromAccount.key}" />
<td th:text="${transaction.toAccount.key}" />
<td th:text="${transaction.date}" />
<td th:text="${#numbers.formatDecimal(transaction.amount/100D, 1, 'DEFAULT', 2, 'DEFAULT')}"/>
<td th:text="${transaction.description}" />
<td th:text="${transaction.recurringTransaction != null}" />
<td>
<div id="account-transaction-table-actions-container">
<a th:href="@{/deleteTransaction(transactionId=${transaction.id}, accountKey=${account.key})}"
th:text="#{financer.account-details.table.actions.deleteTransaction}"/>
</div>
</td>
</tr>
</table>
<div th:replace="includes/footer :: footer"/>
</body>
</html>

View File

@@ -0,0 +1,64 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="#{financer.account-overview.title}"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" th:href="@{/css/main.css}">
</head>
<body>
<h1 th:text="#{financer.heading.account-overview}" />
<div id="status-container">
<span th:text="#{financer.account-overview.status}"/>
<div>
<span th:text="#{financer.account-overview.status.recurring-transaction-due-today}"/>
<a th:href="@{/recurringTransactionDueToday}" th:text="${rtDueTodayCount}"/>
</div>
<div>
<span th:text="#{financer.account-overview.status.recurring-transaction-active}"/>
<a th:href="@{/recurringTransactionActive}" th:text="${rtAllActiveCount}"/>
</div>
</div>
<span th:text="#{financer.account-overview.available-actions}"/>
<div id="action-container">
<div id="action-container-sub-accounts">
<a th:if="${!showClosed}" th:href="@{'/accountOverview?showClosed=true'}"
th:text="#{financer.account-overview.available-actions.show-closed}"/>
<a th:if="${showClosed}" th:href="@{'/accountOverview'}"
th:text="#{financer.account-overview.available-actions.hide-closed}"/>
<a th:href="@{/newAccount}" th:text="#{financer.account-overview.available-actions.create-account}"/>
<a th:href="@{/newAccountGroup}" th:text="#{financer.account-overview.available-actions.create-account-group}"/>
</div>
<div id="action-container-sub-transactions">
<a th:href="@{/newTransaction}" th:text="#{financer.account-overview.available-actions.create-transaction}"/>
</div>
<div id="action-container-sub-recurring-transactions">
<a th:href="@{/newRecurringTransaction}"
th:text="#{financer.account-overview.available-actions.create-recurring-transaction}"/>
<a th:href="@{/recurringTransactionAll}"
th:text="#{financer.account-overview.available-actions.recurring-transaction-all}"/>
</div>
</div>
<table id="account-overview-table">
<tr>
<th class="hideable-column" th:text="#{financer.account-overview.table-header.id}"/>
<th th:text="#{financer.account-overview.table-header.key}"/>
<th th:text="#{financer.account-overview.table-header.balance}"/>
<th class="hideable-column" th:text="#{financer.account-overview.table-header.group}"/>
<th class="hideable-column" th:text="#{financer.account-overview.table-header.type}"/>
<th class="hideable-column" th:text="#{financer.account-overview.table-header.status}"/>
</tr>
<tr th:each="acc : ${accounts}">
<td class="hideable-column" th:text="${acc.id}"/>
<td>
<a th:href="@{/accountDetails(key=${acc.key})}" th:text="${acc.key}"/>
</td>
<td th:text="${#numbers.formatDecimal(acc.currentBalance/100D, 1, 'DEFAULT', 2, 'DEFAULT')}"/>
<td class="hideable-column" th:text="${acc.accountGroup?.name}"/>
<td class="hideable-column" th:text="#{'financer.account-type.' + ${acc.type}}"/>
<td class="hideable-column" th:text="#{'financer.account-status.' + ${acc.status}}"/>
</tr>
</table>
<div th:replace="includes/footer :: footer"/>
</body>
</html>

View File

@@ -0,0 +1,27 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="#{financer.account-new.title}"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" th:href="@{/css/main.css}">
</head>
<body>
<h1 th:text="#{financer.heading.account-new}" />
<span class="errorMessage" th:if="${errorMessage != null}" th:text="#{'financer.error-message.' + ${errorMessage}}"/>
<form id="new-account-form" action="#" th:action="@{/saveAccount}" th:object="${form}" method="post">
<label for="inputKey" th:text="#{financer.account-new.label.key}"/>
<input type="text" id="inputKey" th:field="*{key}" />
<label for="selectType" th:text="#{financer.account-new.label.type}"/>
<select id="selectType" th:field="*{type}">
<option th:each="type : ${accountTypes}" th:value="${type}" th:text="#{'financer.account-type.' + ${type}}"/>
</select>
<label for="selectGroup" th:text="#{financer.account-new.label.group}"/>
<select id="selectGroup" th:field="*{group}">
<option th:each="group : ${accountGroups}" th:value="${group.name}" th:text="${group.name}"/>
</select>
<input type="submit" th:value="#{financer.account-new.submit}" />
</form>
<div th:replace="includes/footer :: footer"/>
</body>
</html>

View File

@@ -0,0 +1,19 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="#{financer.account-group-new.title}"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" th:href="@{/css/main.css}">
</head>
<body>
<h1 th:text="#{financer.heading.account-group-new}" />
<span class="errorMessage" th:if="${errorMessage != null}" th:text="#{'financer.error-message.' + ${errorMessage}}"/>
<form id="new-account-group-form" action="#" th:action="@{/saveAccountGroup}" th:object="${form}" method="post">
<label for="inputName" th:text="#{financer.account-group-new.label.name}"/>
<input type="text" id="inputName" th:field="*{name}" />
<input type="submit" th:value="#{financer.account-group-new.submit}" />
</form>
<div th:replace="includes/footer :: footer"/>
</body>
</html>

View File

@@ -0,0 +1,4 @@
<div id="footer-container" th:fragment="footer">
<hr>
<span th:text="'financer v' + ${financerVersion}"/>
</div>

View File

@@ -0,0 +1,48 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="#{financer.recurring-transaction-new.title}"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" th:href="@{/css/main.css}">
</head>
<body>
<h1 th:text="#{financer.heading.recurring-transaction-new}" />
<span class="errorMessage" th:if="${errorMessage != null}" th:text="#{'financer.error-message.' + ${errorMessage}}"/>
<form id="new-recurring-transaction-form" action="#" th:action="@{/saveRecurringTransaction}" th:object="${form}"
method="post">
<label for="selectFromAccount" th:text="#{financer.recurring-transaction-new.label.from-account}"/>
<select id="selectFromAccount" th:field="*{fromAccountKey}">
<option th:each="acc : ${accounts}" th:value="${acc.key}"
th:text="#{'financer.recurring-transaction-new.account-type.' + ${acc.type}(${acc.key},${#numbers.formatDecimal(acc.currentBalance/100D, 1, 'DEFAULT', 2, 'DEFAULT')})}"/>
</select>
<label for="selectToAccount" th:text="#{financer.recurring-transaction-new.label.to-account}"/>
<select id="selectToAccount" th:field="*{toAccountKey}">
<option th:each="acc : ${accounts}" th:value="${acc.key}"
th:text="#{'financer.recurring-transaction-new.account-type.' + ${acc.type}(${acc.key},${#numbers.formatDecimal(acc.currentBalance/100D, 1, 'DEFAULT', 2, 'DEFAULT')})}"/>
</select>
<label for="inputAmount" th:text="#{financer.recurring-transaction-new.label.amount}"/>
<input type="text" id="inputAmount" th:field="*{amount}"/>
<label for="inputFirstOccurrence" th:text="#{financer.recurring-transaction-new.label.first-occurrence}"/>
<input type="date" id="inputFirstOccurrence" th:field="*{firstOccurrence}"/>
<label for="inputLastOccurrence" th:text="#{financer.recurring-transaction-new.label.last-occurrence}"/>
<input type="date" id="inputLastOccurrence" th:field="*{lastOccurrence}"/>
<label for="selectInterval" th:text="#{financer.recurring-transaction-new.label.interval-type}"/>
<select id="selectInterval" th:field="*{intervalType}">
<option th:each="inter : ${intervalTypes}" th:value="${inter}"
th:text="#{'financer.interval-type.' + ${inter}}"/>
</select>
<label for="selectHolidayWeekend" th:text="#{financer.recurring-transaction-new.label.holiday-weekend-type}"/>
<select id="selectHolidayWeekend" th:field="*{holidayWeekendType}">
<option th:each="hdwt : ${holidayWeekendTypes}" th:value="${hdwt}"
th:text="#{'financer.holiday-weekend-type.' + ${hdwt}}"/>
</select>
<label for="inputDescription" th:text="#{financer.recurring-transaction-new.label.description}"/>
<input type="text" id="inputDescription" th:field="*{description}"/>
<label for="inputRemind" th:text="#{financer.recurring-transaction-new.label.remind}" />
<input type="checkbox" id="inputRemind" th:field="*{remind}" />
<input type="submit" th:value="#{financer.recurring-transaction-new.submit}"/>
</form>
<div th:replace="includes/footer :: footer"/>
</body>
</html>

View File

@@ -0,0 +1,22 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="#{financer.recurring-to-transaction-with-amount.title}"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" th:href="@{/css/main.css}">
</head>
<body>
<h1 th:text="#{financer.heading.recurring-to-transaction-with-amount}" />
<span class="errorMessage" th:if="${errorMessage != null}" th:text="#{'financer.error-message.' + ${errorMessage}}"/>
<form id="recurring-to-transaction-with-amount-form" action="#" th:action="@{/createTransactionWithAmount}" th:object="${form}"
method="post">
<label for="inputAmount" th:text="#{financer.recurring-to-transaction-with-amount.label.amount}"/>
<input type="text" id="inputAmount" th:field="*{amount}"/>
<input type="hidden" id="inputId" th:field="*{recurringTransactionId}"/>
<input type="hidden" id="inputSub" th:field="*{subTitle}"/>
<input type="submit" th:value="#{financer.recurring-to-transaction-with-amount.submit}"/>
</form>
<div th:replace="includes/footer :: footer"/>
</body>
</html>

View File

@@ -0,0 +1,53 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="#{'financer.recurring-transaction-list.title.' + ${subTitle}}"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" th:href="@{/css/main.css}">
</head>
<body>
<h1 th:text="#{'financer.heading.recurring-transaction-list.' + ${subTitle}}"/>
<span class="errorMessage" th:if="${errorMessage != null}" th:text="#{'financer.error-message.' + ${errorMessage}}"/>
<table id="recurring-transaction-list-table">
<tr>
<th class="hideable-column" th:text="#{financer.recurring-transaction-list.table-header.id}"/>
<th th:text="#{financer.recurring-transaction-list.table-header.fromAccount}"/>
<th th:text="#{financer.recurring-transaction-list.table-header.toAccount}"/>
<th th:text="#{financer.recurring-transaction-list.table-header.firstOccurrence}"/>
<th th:text="#{financer.recurring-transaction-list.table-header.lastOccurrence}"/>
<th th:text="#{financer.recurring-transaction-list.table-header.amount}"/>
<th th:text="#{financer.recurring-transaction-list.table-header.description}"/>
<th th:text="#{financer.recurring-transaction-list.table-header.intervalType}"/>
<th th:text="#{financer.recurring-transaction-list.table-header.holidayWeekendType}"/>
<th th:text="#{financer.recurring-transaction-list.table-header.actions}"/>
</tr>
<tr th:each="rt : ${recurringTransactions}">
<td class="hideable-column" th:text="${rt.id}"/>
<td>
<a th:href="@{/accountDetails(key=${rt.fromAccount.key})}" th:text="${rt.fromAccount.key}"/>
</td>
<td>
<a th:href="@{/accountDetails(key=${rt.toAccount.key})}" th:text="${rt.toAccount.key}"/>
</td>
<td th:text="${rt.firstOccurrence}"/>
<td th:text="${rt.lastOccurrence}"/>
<td th:text="${#numbers.formatDecimal(rt.amount/100D, 1, 'DEFAULT', 2, 'DEFAULT')}"/>
<td th:text="${rt.description}"/>
<td th:text="#{'financer.interval-type.' + ${rt.intervalType}}"/>
<td th:text="#{'financer.holiday-weekend-type.' + ${rt.holidayWeekendType}}"/>
<td>
<div id="recurring-transaction-list-table-actions-container">
<a th:href="@{/recurringToTransaction(recurringTransactionId=${rt.id}, sub=${subTitle})}"
th:text="#{financer.recurring-transaction-list.table.actions.createTransaction}"/>
<a th:href="@{/recurringToTransactionWithAmount(recurringTransactionId=${rt.id}, sub=${subTitle})}"
th:text="#{financer.recurring-transaction-list.table.actions.createTransactionWithAmount}"/>
<a th:if="${subTitle == 'all'}" th:href="@{/deleteRecurringTransaction(recurringTransactionId=${rt.id})}"
th:text="#{financer.recurring-transaction-list.table.actions.deleteRecurringTransaction}"/>
</div>
</td>
</tr>
</table>
<div th:replace="includes/footer :: footer"/>
</body>
</html>

View File

@@ -0,0 +1,33 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="#{financer.transaction-new.title}"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" th:href="@{/css/main.css}">
</head>
<body>
<h1 th:text="#{financer.heading.transaction-new}" />
<span class="errorMessage" th:if="${errorMessage != null}" th:text="#{'financer.error-message.' + ${errorMessage}}"/>
<form id="new-transaction-form" action="#" th:action="@{/saveTransaction}" th:object="${form}"
method="post">
<label for="selectFromAccount" th:text="#{financer.transaction-new.label.from-account}"/>
<select id="selectFromAccount" th:field="*{fromAccountKey}">
<option th:each="acc : ${accounts}" th:value="${acc.key}"
th:text="#{'financer.transaction-new.account-type.' + ${acc.type}(${acc.key},${#numbers.formatDecimal(acc.currentBalance/100D, 1, 'DEFAULT', 2, 'DEFAULT')})}"/>
</select>
<label for="selectToAccount" th:text="#{financer.transaction-new.label.to-account}"/>
<select id="selectToAccount" th:field="*{toAccountKey}">
<option th:each="acc : ${accounts}" th:value="${acc.key}"
th:text="#{'financer.transaction-new.account-type.' + ${acc.type}(${acc.key},${#numbers.formatDecimal(acc.currentBalance/100D, 1, 'DEFAULT', 2, 'DEFAULT')})}"/>
</select>
<label for="inputAmount" th:text="#{financer.transaction-new.label.amount}"/>
<input type="text" id="inputAmount" th:field="*{amount}"/>
<label for="inputDate" th:text="#{financer.transaction-new.label.date}"/>
<input type="date" id="inputDate" th:field="*{date}"/>
<label for="inputDescription" th:text="#{financer.transaction-new.label.description}"/>
<input type="text" id="inputDescription" th:field="*{description}"/>
<input type="submit" th:value="#{financer.transaction-new.submit}"/>
</form>
</body>
</html>