From 0e96a561d81d45fb16311476d6df98ad053ee1dd Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Wed, 11 Jan 2023 22:43:19 +0100
Subject: [PATCH] #724 - refactor: externalized macro

---
 .../transactions/transactionImport.ftl        | 60 ++++++++++---------
 1 file changed, 32 insertions(+), 28 deletions(-)

diff --git a/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl b/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl
index 62cacc1cf..c162a70f8 100644
--- a/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl
+++ b/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl
@@ -198,39 +198,43 @@
             </tr>
 
             <#list csvTransactions as csvTransaction>
-                <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/' + csvTransaction?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/' + csvTransaction?index + '/newTransaction/normal'/>" class="btn-floating btn background-orange"><i class="material-icons">payment</i></a>
-                                </li>
-                                <li>
-                                    <a href="<@s.url '/transactionImport/' + csvTransaction?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/' + csvTransaction?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/' + csvTransaction?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/' + csvTransaction?index + '/newFromTemplate'/>" class="btn-floating btn background-blue-baby"><i class="material-icons">file_copy</i></a>
-                                </li>
-                            </ul>
-                        </div>
-                        <@header.buttonFlat url='/transactionImport/' + csvTransaction?index + '/skip' icon='block' localizationKey='' classes="no-padding text-default button-request-transaction-import-skip"/>
-                    </td>
-                </tr>
+                <@renderCsvRow csvTransaction csvTransaction?index/>
             </#list>
         </table>
     </div>
 </#macro>
 
+<#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>
+    </tr>
+</#macro>
+
 <#macro statusBanner status>
     <#if status.name() == "PENDING">
         <#assign bannerClasses="background-blue text-white">
-- 
GitLab