From b43a79071788b74c8e7df5edbe47354343f6c965 Mon Sep 17 00:00:00 2001 From: fnuesse Date: Sun, 23 Dec 2018 10:07:56 +0100 Subject: [PATCH] Added swipedetection Signed-off-by: fnuesse --- js/app/controllers/credential.js | 59 +++++++++++++++++++++++++++++++- templates/views/show_vault.html | 2 +- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/js/app/controllers/credential.js b/js/app/controllers/credential.js index 0ad511aa..92afd35d 100644 --- a/js/app/controllers/credential.js +++ b/js/app/controllers/credential.js @@ -467,7 +467,63 @@ return list_without_hidden; }; + //https://stackoverflow.com/questions/15084675/how-to-implement-swipe-gestures-for-mobile-devices + $scope.detectSwipe = function(el,func) { + var swipe_det = {}; + swipe_det.sX = 0; swipe_det.sY = 0; swipe_det.eX = 0; swipe_det.eY = 0; + var min_x = 30; //min x swipe for horizontal swipe + var max_x = 30; //max x difference for vertical swipe + var min_y = 100; //min y swipe for vertical swipe + var max_y = 60; //max y difference for horizontal swipe + var direc = ""; + var ele = document.getElementById(el); + ele.addEventListener('touchstart',function(e){ + var t = e.touches[0]; + swipe_det.sX = t.screenX; + swipe_det.sY = t.screenY; + e.preventDefault(); + },false); + ele.addEventListener('touchmove',function(e){ + e.preventDefault(); + var t = e.touches[0]; + swipe_det.eX = t.screenX; + swipe_det.eY = t.screenY; + + e.preventDefault(); + },false); + ele.addEventListener('touchend',function(e){ + //horizontal detection + if ((((swipe_det.eX - min_x > swipe_det.sX) || (swipe_det.eX + min_x < swipe_det.sX)) && ((swipe_det.eY < swipe_det.sY + max_y) && (swipe_det.sY > swipe_det.eY - max_y) && (swipe_det.eX > 0)))) { + if(swipe_det.eX > swipe_det.sX) direc = "r"; + else direc = "l"; + } + //vertical detection + else if ((((swipe_det.eY - min_y > swipe_det.sY) || (swipe_det.eY + min_y < swipe_det.sY)) && ((swipe_det.eX < swipe_det.sX + max_x) && (swipe_det.sX > swipe_det.eX - max_x) && (swipe_det.eY > 0)))) { + if(swipe_det.eY > swipe_det.sY) direc = "d"; + else direc = "u"; + } + + if (direc !== "") { + if(typeof func === 'function'){ + func(el, direc); + e.preventDefault(); + } + } + direc = ""; + swipe_det.sX = 0; swipe_det.sY = 0; swipe_det.eX = 0; swipe_det.eY = 0; + },false); + }; + + $scope.closeSidebar = function (element, direction) { + if(element==='app-sidebar'){ + if(direction==='r'){ + $('#close_sidebar_button').click(); + } + } + }; + + $scope.detectSwipe('app-sidebar',$scope.closeSidebar); $scope.selectedtags = []; var to; @@ -545,4 +601,5 @@ }; }]); -}()); \ No newline at end of file +}()); + diff --git a/templates/views/show_vault.html b/templates/views/show_vault.html index f1359f68..14553cf7 100644 --- a/templates/views/show_vault.html +++ b/templates/views/show_vault.html @@ -140,7 +140,7 @@
- +