[Mobile] Gestures

Now to dismiss bubble, touch anywhere
the touch will not fire other gestures
(such as the pressing of another object).
This commit is contained in:
Shivam Dave
2015-08-04 13:41:48 -07:00
parent 3d524d7572
commit 66408eeec8
2 changed files with 23 additions and 15 deletions

View File

@@ -39,7 +39,6 @@ define(
*/ */
function InfoGestureButton($document, agentService, infoService, element, domainObject) { function InfoGestureButton($document, agentService, infoService, element, domainObject) {
var dismissBubble, var dismissBubble,
pendingBubble,
touchPosition, touchPosition,
scopeOff, scopeOff,
body = $document.find('body'); body = $document.find('body');
@@ -59,6 +58,7 @@ define(
dismissBubble(); dismissBubble();
dismissBubble = undefined; dismissBubble = undefined;
} }
// Detaches body touch listener // Detaches body touch listener
body.off('touchstart', hideBubble); body.off('touchstart', hideBubble);
} }
@@ -68,17 +68,24 @@ define(
// and then on any body touch the bubble is dismissed // and then on any body touch the bubble is dismissed
function showBubble(event) { function showBubble(event) {
trackPosition(event); trackPosition(event);
// Show the bubble, but on any touchstart on the // Show the bubble, but on any touchstart on the
// body (anywhere) call hidebubble // body (anywhere) call hidebubble
pendingBubble = dismissBubble = infoService.display(
dismissBubble = infoService.display( "info-table",
"info-table", domainObject.getModel().name,
domainObject.getModel().name, domainObject.useCapability('metadata'),
domainObject.useCapability('metadata'), touchPosition
touchPosition );
);
body.on('touchstart', hideBubble); // On any touch on the body, default body touches/events
// are prevented, the bubble is dismissed, and the touchstart
// body event is unbound, reallowing gestures
body.on('touchstart', function (event) {
event.preventDefault();
hideBubble();
body.unbind('touchstart');
});
} }
// Checks if you are on a mobile device, if the device is // Checks if you are on a mobile device, if the device is

View File

@@ -61,10 +61,11 @@ define(
// info bubble positioned as normal (with triangle pointing // info bubble positioned as normal (with triangle pointing
// to where clicked or pressed) // to where clicked or pressed)
bubble.css('position', 'absolute'); bubble.css('position', 'absolute');
if(agentService.isPhone(navigator.userAgent)) { if (agentService.isPhone(navigator.userAgent)) {
bubble.css('right', 5 + 'px'); bubble.css('right', 0 + 'px');
bubble.css('left', 5 + 'px'); bubble.css('left', 0 + 'px');
bubble.css('top', 40 + 'px'); bubble.css('top', 'auto');
bubble.css('bottom', 25 + 'px');
} else { } else {
if (goLeft) { if (goLeft) {
bubble.css('right', (winDim[0] - position[0] + OFFSET[0]) + 'px'); bubble.css('right', (winDim[0] - position[0] + OFFSET[0]) + 'px');
@@ -79,7 +80,7 @@ define(
} }
// Add the menu to the body // Add the menu to the body
body.append(bubble); body.append(bubble);
// Return a function to dismiss the bubble // Return a function to dismiss the bubble
return function () { bubble.remove(); }; return function () { bubble.remove(); };
} }