From 5475ba6b933b20330350eb1a41df68381020efab Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 22 May 2022 18:58:26 +0200
Subject: [PATCH] #681 - select account with corresponding index on hotkey

---
 .../src/main/resources/static/js/main.js         | 16 ++++++++++++++++
 .../templates/globalAccountSelectModal.ftl       |  2 +-
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/BudgetMasterServer/src/main/resources/static/js/main.js b/BudgetMasterServer/src/main/resources/static/js/main.js
index 2ee860f83..b27d109f1 100644
--- a/BudgetMasterServer/src/main/resources/static/js/main.js
+++ b/BudgetMasterServer/src/main/resources/static/js/main.js
@@ -8,6 +8,7 @@ $(document).ready(function()
     $('#globalAccountSelect').click(function()
     {
         fetchAndShowModal(this, 'globalAccountSelectModalOnDemand', '#modalGlobalAccountSelect');
+        enableAccountSelectHotKeys();
     });
 
     $('.sidenav').sidenav();
@@ -124,3 +125,18 @@ function validateLoginForm()
     let passwordInput = document.getElementById('login-password');
     passwordInput.value = passwordInput.value.trim();
 }
+
+function enableAccountSelectHotKeys()
+{
+    Mousetrap.bind(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], function(e)
+    {
+        if(areHotKeysEnabled())
+        {
+            let accountItem = document.querySelector('.global-account-select-option[data-account-index="' + e.key + '"]');
+            if(accountItem !== null)
+            {
+                accountItem.click();
+            }
+        }
+    });
+}
diff --git a/BudgetMasterServer/src/main/resources/templates/globalAccountSelectModal.ftl b/BudgetMasterServer/src/main/resources/templates/globalAccountSelectModal.ftl
index 32ed9b319..1029bc1a3 100644
--- a/BudgetMasterServer/src/main/resources/templates/globalAccountSelectModal.ftl
+++ b/BudgetMasterServer/src/main/resources/templates/globalAccountSelectModal.ftl
@@ -28,7 +28,7 @@
 
                 <div class="col s12 m6 xl6">
                     <a href="<@s.url '/accounts/${account.getID()?c}/select'/>" class="text-default">
-                        <div class="card-panel global-account-select-option">
+                        <div class="card-panel global-account-select-option" data-account-index="${account?index}">
                             <#if account?index < 10>
                                 <div class="keyboard-key bold global-account-select-option-key">${account?index}</div>
                             <#else>
-- 
GitLab