diff --git a/Aberwyn/Views/Budget/Index.cshtml b/Aberwyn/Views/Budget/Index.cshtml index 609f132..86a33a3 100644 --- a/Aberwyn/Views/Budget/Index.cshtml +++ b/Aberwyn/Views/Budget/Index.cshtml @@ -130,7 +130,7 @@ due: item.paymentStatus === 1, paid: item.paymentStatus === 2 }" - ng-click="ctrlClick($event, item)"> + ng-click="handleItemInteraction($event, item)"> diff --git a/Aberwyn/wwwroot/js/budget.js b/Aberwyn/wwwroot/js/budget.js index ee3c27c..af1c44d 100644 --- a/Aberwyn/wwwroot/js/budget.js +++ b/Aberwyn/wwwroot/js/budget.js @@ -90,24 +90,36 @@ app.controller('BudgetController', function ($scope, $http) { $scope.menuOpen = false; }); }); - $scope.ctrlClick = function (event, item) { - if (!event.ctrlKey) return; + let lastTapTime = 0; - const current = typeof item.paymentStatus === 'number' && !isNaN(item.paymentStatus) - ? item.paymentStatus - : 0; + $scope.handleItemInteraction = function (event, item) { + const now = new Date().getTime(); - item.paymentStatus = (current + 1) % 3; + // Ctrl-klick på desktop + if (event.ctrlKey) { + togglePaymentStatus(item); + return; + } + + // Dubbeltap på mobil (inom 400ms) + if (now - lastTapTime < 400) { + togglePaymentStatus(item); + event.preventDefault(); + } + + lastTapTime = now; + }; + + function togglePaymentStatus(item) { + item.paymentStatus = (item.paymentStatus + 1) % 3; $http.put("/api/budget/updatePaymentStatus", { itemId: item.id, status: item.paymentStatus }).then(() => { $scope.showToast("Betalstatus uppdaterad"); - }).catch(err => { - console.error("Fel vid uppdatering:", err); }); - }; + }