Skip to content

Commit

Permalink
#724 - allow in place editing of transaction name and saving
Browse files Browse the repository at this point in the history
  • Loading branch information
deadlocker8 committed Jan 11, 2023
1 parent 0e96a56 commit 3cd7bfa
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,43 @@ public String newTransaction(WebRequest request,
final CsvTransaction csvTransaction = transactionOptional.get();
csvTransaction.setStatus(CsvTransactionStatus.IMPORTED);

final Transaction newTransaction = createTransactionFromCsvTransaction(csvTransaction);

// TODO use csvTransaction.getDate() instead of debug date
transactionService.prepareModelNewOrEdit(model, false, LocalDate.now(), false, newTransaction, accountService.getAllActivatedAccountsAsc());

if(type.equals("transfer"))
{
return ReturnValues.NEW_TRANSACTION_TRANSFER;
}
return ReturnValues.NEW_TRANSACTION_NORMAL;
}

@PostMapping("/{index}/newTransactionInPlace")
public String newTransactionInPlace(WebRequest request,
@PathVariable("index") Integer index,
@ModelAttribute("NewTransactionInPlace") CsvTransaction newCsvTransaction)
{
final Optional<CsvTransaction> transactionOptional = getTransactionByIndex(request, index);
if(transactionOptional.isEmpty())
{
return ReturnValues.REDIRECT_IMPORT;
}

final CsvTransaction csvTransaction = transactionOptional.get();
csvTransaction.setStatus(CsvTransactionStatus.IMPORTED);

// update original CsvTransaction attributes with values from user (from newCsvTransaction)
csvTransaction.setName(newCsvTransaction.getName());

final Transaction newTransaction = createTransactionFromCsvTransaction(csvTransaction);
transactionService.getRepository().save(newTransaction);

return ReturnValues.REDIRECT_IMPORT;
}

private Transaction createTransactionFromCsvTransaction(CsvTransaction csvTransaction)
{
final Transaction newTransaction = new Transaction();
// TODO parse first
// newTransaction.setDate(csvTransaction.getDate());
Expand All @@ -208,14 +245,7 @@ public String newTransaction(WebRequest request,
newTransaction.setAccount(helpers.getCurrentAccountOrDefault());
newTransaction.setCategory(categoryService.findByType(CategoryType.NONE));

// TODO use csvTransaction.getDate() instead of debug date
transactionService.prepareModelNewOrEdit(model, false, LocalDate.now(), false, newTransaction, accountService.getAllActivatedAccountsAsc());

if(type.equals("transfer"))
{
return ReturnValues.NEW_TRANSACTION_TRANSFER;
}
return ReturnValues.NEW_TRANSACTION_NORMAL;
return newTransaction;
}

private void removeAllAttributes(WebRequest request)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
public final class CsvTransaction
{
private final String date;
private final String name;
private String name;
private final String amount;
private CsvTransactionStatus status;

Expand All @@ -27,6 +27,11 @@ public String getName()
return name;
}

public void setName(String name)
{
this.name = name;
}

public String getAmount()
{
return amount;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,32 +206,41 @@

<#macro renderCsvRow csvTransaction index>
<tr>
<td><@statusBanner csvTransaction.getStatus()/></td>
<td>${csvTransaction.getDate()}</td>
<td>${csvTransaction.getName()}</td>
<td>${csvTransaction.getAmount()}</td>
<td>
<div class="fixed-action-btn edit-transaction-button">
<a class="btn-floating btn-flat waves-effect waves-light no-padding text-default edit-transaction-button-link">
<i class="material-icons">edit</i>
</a>
<ul class="new-transaction-button-list">
<li>
<a href="<@s.url '/transactionImport/' + index + '/newTransaction/normal'/>" class="btn-floating btn mobile-fab-tip no-wrap">${locale.getString("title.transaction.new", locale.getString("title.transaction.new.normal"))}</a>
<a href="<@s.url '/transactionImport/' + index + '/newTransaction/normal'/>" class="btn-floating btn background-orange"><i class="material-icons">payment</i></a>
</li>
<li>
<a href="<@s.url '/transactionImport/' + index + '/newTransaction/transfer'/>" class="btn-floating btn mobile-fab-tip no-wrap">${locale.getString("title.transaction.new", locale.getString("title.transaction.new.transfer"))}</a>
<a href="<@s.url '/transactionImport/' + index + '/newTransaction/transfer'/>" class="btn-floating btn background-green-dark"><i class="material-icons">swap_horiz</i></a>
</li>
<li>
<a href="<@s.url '/transactionImport/' + index + '/newFromTemplate'/>" class="btn-floating btn mobile-fab-tip no-wrap">${locale.getString("title.transaction.new", locale.getString("title.transaction.new.from.template"))}</a>
<a href="<@s.url '/transactionImport/' + index + '/newFromTemplate'/>" class="btn-floating btn background-blue-baby"><i class="material-icons">file_copy</i></a>
</li>
</ul>
</div>
<@header.buttonFlat url='/transactionImport/' + index + '/skip' icon='block' localizationKey='' classes="no-padding text-default button-request-transaction-import-skip"/>
</td>
<form name="NewTransactionInPlace" method="POST" action="<@s.url '/transactionImport/' + index + '/newTransactionInPlace'/>">
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
<td><@statusBanner csvTransaction.getStatus()/></td>
<td>${csvTransaction.getDate()}</td>
<td>
<div class="input-field">
<input id="name-${index}" type="text" name="name" required value="${csvTransaction.getName()}">
<label class="input-label" for="name-${index}">${locale.getString("transaction.new.label.name")}</label>
</div>
</td>
<td>${csvTransaction.getAmount()}</td>
<td>
<@header.buttonSubmit name='action' icon='save' localizationKey='' classes='text-white'/>
<div class="fixed-action-btn edit-transaction-button">
<a class="btn-floating btn-flat waves-effect waves-light no-padding text-default edit-transaction-button-link">
<i class="material-icons">edit</i>
</a>
<ul class="new-transaction-button-list">
<li>
<a href="<@s.url '/transactionImport/' + index + '/newTransaction/normal'/>" class="btn-floating btn mobile-fab-tip no-wrap">${locale.getString("title.transaction.new", locale.getString("title.transaction.new.normal"))}</a>
<a href="<@s.url '/transactionImport/' + index + '/newTransaction/normal'/>" class="btn-floating btn background-orange"><i class="material-icons">payment</i></a>
</li>
<li>
<a href="<@s.url '/transactionImport/' + index + '/newTransaction/transfer'/>" class="btn-floating btn mobile-fab-tip no-wrap">${locale.getString("title.transaction.new", locale.getString("title.transaction.new.transfer"))}</a>
<a href="<@s.url '/transactionImport/' + index + '/newTransaction/transfer'/>" class="btn-floating btn background-green-dark"><i class="material-icons">swap_horiz</i></a>
</li>
<li>
<a href="<@s.url '/transactionImport/' + index + '/newFromTemplate'/>" class="btn-floating btn mobile-fab-tip no-wrap">${locale.getString("title.transaction.new", locale.getString("title.transaction.new.from.template"))}</a>
<a href="<@s.url '/transactionImport/' + index + '/newFromTemplate'/>" class="btn-floating btn background-blue-baby"><i class="material-icons">file_copy</i></a>
</li>
</ul>
</div>
<@header.buttonFlat url='/transactionImport/' + index + '/skip' icon='block' localizationKey='' classes="no-padding text-default button-request-transaction-import-skip"/>
</td>
</form>
</tr>
</#macro>

Expand Down

0 comments on commit 3cd7bfa

Please sign in to comment.