front_idill/src/mosaic/js/touchInteractions.js
author bastiena
Wed, 08 Aug 2012 18:40:40 +0200
changeset 77 205409da0f32
child 79 9eff85166868
permissions -rw-r--r--
Front IDILL: tablet interactions : zoom, unzoom, move, read a video, show markers for ipad but not android yet filter mosaic, draw curves but not search in video yet, show help
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
77
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
     1
/*
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
     2
* This file is part of the TraKERS\Front IDILL package.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
     3
*
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
     4
* (c) IRI <http://www.iri.centrepompidou.fr/>
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
     5
*
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
     6
* For the full copyright and license information, please view the LICENSE
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
     7
* file that was distributed with this source code.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
     8
*/
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
     9
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    10
/*
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    11
 * Projet : TraKERS
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    12
 * Module : Front IDILL
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    13
 * Fichier : touchInteractions.js
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    14
 * 
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    15
 * Auteur : alexandre.bastien@iri.centrepompidou.fr
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    16
 * 
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    17
 * Fonctionnalités : Définit les fonctions d'intéraction pour tablettes.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    18
 */
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    19
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    20
/*
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    21
 * Fonction appelée lors d'un touch start en mode d'interaction touch.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    22
 * Est appelé dans le fichier :
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    23
 * mosaic > fonction loadMosaic, attachée à l'événement ontouchstart.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    24
*/
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    25
Mosaic.prototype.onTouchStart = function(e)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    26
{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    27
	this.isTouchStart = true;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    28
	this.isTouchMove = false;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    29
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    30
	//Si on est sur l'icone de sortie.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    31
	if(this.isOnExitIcon(e.pageX, e.pageY) && this.helpDisplayed)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    32
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    33
		//On ferme l'aide.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    34
		this.removeExitIcon();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    35
		this.removeHelp();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    36
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    37
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    38
	//Si on est sur l'icone de retour à la mosaïque.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    39
	if(this.isOnHomeIcon(e.pageX, e.pageY) && !this.helpDisplayed)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    40
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    41
		//On dézoom.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    42
		this.unzoom();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    43
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    44
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    45
	//Si on se trouve sur l'icone d'aide et qu'elle est zoomée.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    46
	if(this.isOnHelpIcon(e.pageX, e.pageY) && !this.helpDisplayed)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    47
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    48
		//On affiche différentes aides en fonction de si on se trouve dans une vidéo ou non.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    49
		if(this.currentMode == 'SEARCH' || this.currentMode == 'VIDEO' || this.currentMode == 'TIMELINE')
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    50
		{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    51
			this.notifyHelp(false);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    52
		}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    53
		else if(this.currentMode == 'FILTER' || this.currentMode == 'MOSAIC')
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    54
		{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    55
			this.notifyHelp(true);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    56
		}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    57
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    58
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    59
	//Si on est dans une vidéo.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    60
	if(this.currentMode == 'VIDEO' || this.currentMode == 'SEARCH')
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    61
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    62
		//On regarde si on a touché un snapshot.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    63
		var snapshot = this.positionToSN(e.pageX - this.notifyLeftVideo, e.pageY - this.notifyTopVideo);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    64
		
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    65
		if(snapshot && !this.isOnSearchNotification(e.pageX, e.pageY) && !this.isOnSearchExitIcon(e.pageX, e.pageY))
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    66
		{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    67
			this.canMoveToNeighbour = true;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    68
			var id = snapshot.attr('id').replace('snapshotDiv-', '');
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    69
			this.correctMoveToNeighbour(id, e.pageX - this.notifyLeftVideo, e.pageY - this.notifyTopVideo);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    70
			this.canMoveToNeighbour = false;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    71
		}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    72
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    73
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    74
	//Si on est sur l'icone de sortie de recherche.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    75
	if(this.isOnSearchExitIcon(e.pageX, e.pageY) && !this.helpDisplayed)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    76
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    77
		//On ferme l'aide.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    78
		this.removeSearchExitIcon();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    79
		
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    80
		this.removeNotifications();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    81
		if(this.currentMode == 'SEARCH')
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    82
		{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    83
			this.player.widgets[0].removeSearchByGesture();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    84
			this.currentMode = 'VIDEO';
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    85
			this.currentSearchGesture[this.centerId] = '';
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    86
		}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    87
		else if(this.currentMode == 'TIMELINE')
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    88
		{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    89
			this.player.widgets[0].removeSearchByGesture();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    90
			this.currentMode = 'TIMELINE';
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    91
			this.currentSearchGesture[this.centerId] = '';
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    92
		}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    93
		else if(this.currentMode == 'FILTER')
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    94
		{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    95
			this.removeFilter();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    96
		}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    97
		
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    98
		this.alreadyOnNotification = false;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
    99
		this.isCurrentlyInASearchByGesture = false;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   100
		this.curvesGesturesFound = false;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   101
		this.canDrawNextCurve = false;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   102
		this.isSearchByCurvesOn = false;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   103
		this.canNotifyHelp = false;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   104
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   105
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   106
	//On met à jour les coordonnées de la souris au dernier mouse down.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   107
	this.mouseDownPosX = e.pageX;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   108
	this.mouseDownPosY = e.pageY;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   109
	this.mousePosX = e.pageX;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   110
	this.mousePosY = e.pageY;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   111
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   112
	this.isUserInSearchZone = true;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   113
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   114
	//Si on est en mode de tracé de courbes, on indique qu'on a commencé à tracer au canvas.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   115
	if(this.isSearchByCurvesOn)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   116
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   117
		this.searchCanvas.onPointerIn(this.mousePosX, this.mousePosY, null, null);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   118
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   119
}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   120
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   121
/*
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   122
 * Fonction appelée lors d'un touch move en mode d'interaction touch.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   123
 * Est appelé dans le fichier :
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   124
 * mosaic > fonction loadMosaic, attachée à l'événement jQuery ontouchmove.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   125
*/
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   126
Mosaic.prototype.onTouchMove = function(e)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   127
{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   128
	//Si on n'a pas appuyé sur la souris avant, on part.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   129
	if(!this.isTouchStart)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   130
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   131
		return;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   132
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   133
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   134
	var _this = this;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   135
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   136
	//Si on est en mode de tracé de courbes, on met à jour la courbe.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   137
	if(this.isSearchByCurvesOn)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   138
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   139
		this.searchCanvas.onPointerMove(this.mousePosX, this.mousePosY - this.MPTop_margin, null, null);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   140
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   141
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   142
	//On met à jour l'ancienne position du doigt si elle est nulle.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   143
	if(!this.mousePosLastX && this.mousePosLastX != 0)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   144
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   145
		this.mousePosLastX = this.mousePosX;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   146
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   147
	if(!this.mousePosLastY && this.mousePosLastY != 0)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   148
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   149
		this.mousePosLastY = this.mousePosY;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   150
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   151
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   152
	//Le delta s'accroît si le doigt bouge.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   153
	this.touchUpDownDelta += Math.floor(Math.sqrt((this.mousePosLastX - e.pageX) * (this.mousePosLastX - e.pageX) + (this.mousePosLastY - e.pageY) * (this.mousePosLastY - e.pageY)));
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   154
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   155
	//On met à jour l'ancienne position du doigt.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   156
	if(this.mousePosLastX != this.mousePosX)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   157
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   158
		this.mousePosLastX = this.mousePosX;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   159
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   160
	if(this.mousePosLastY != this.mousePosY)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   161
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   162
		this.mousePosLastY = this.mousePosY;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   163
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   164
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   165
	//Si le doigt a parcouru une trop grande distance, on entre en recherche.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   166
	if(this.touchUpDownDelta > this.config.touchUpDownDeltaTreshold)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   167
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   168
		this.isTouchMove = true;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   169
		//Si on est en mosaique, on entre en filtrage.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   170
		if(this.currentMode == "MOSAIC")
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   171
		{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   172
			this.currentMode = "FILTER";
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   173
			this.isMosaicFiltered = true;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   174
		}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   175
		//Si on est dans une vidéo, on entre en recherche.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   176
		else if(this.currentMode == "VIDEO" || this.currentMode == "TIMELINE")
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   177
		{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   178
			this.currentMode = "SEARCH";
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   179
		}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   180
		
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   181
		if(!this.isSearchByCurvesOn)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   182
		{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   183
			this.isSearchByCurvesOn = true;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   184
			this.startSearch();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   185
			this.searchCanvas.onPointerIn(this.mousePosX, this.mousePosY - this.MPTop_margin, null, null);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   186
		}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   187
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   188
}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   189
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   190
/*
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   191
 * Fonction appelée lors d'un touch end en mode d'interaction touch.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   192
 * Est appelé dans le fichier :
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   193
 * mosaic > fonction loadMosaic, attachée à l'événement jQuery ontouchend.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   194
*/
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   195
Mosaic.prototype.onTouchEnd = function(e)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   196
{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   197
	// alert(this.mousePosX + ' ' + this.mousePosY);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   198
	//Si on est dans la mosaïque.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   199
	if(this.currentMode == 'MOSAIC' || this.currentMode == 'FILTER')
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   200
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   201
		//On regarde si on a touché un snapshot.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   202
		var snapshot = this.positionToSN(this.mousePosX, this.mousePosY);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   203
		// alert(snapshot);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   204
		// alert(this.isTouchMove);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   205
		if(snapshot && !this.isTouchMove)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   206
		{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   207
			this.previousZoomedSN = snapshot;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   208
			this.previousId = snapshot.attr('id');
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   209
			this.zoom();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   210
		}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   211
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   212
	//Sinon si on est dans une video.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   213
	else if(this.currentMode == 'VIDEO' || this.currentMode == 'SEARCH' || this.currentMode == 'TIMELINE')
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   214
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   215
		// console.log(this.isTLSelected(true, null));
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   216
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   217
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   218
	this.isTouchStart = false;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   219
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   220
	//Si on était en train de tracer une courbe.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   221
	if(this.isSearchByCurvesOn)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   222
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   223
		//On dit au module de recherche qu'on arrête de tracer des courbes.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   224
		this.searchCanvas.onPointerOut();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   225
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   226
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   227
	this.mousePosLastX = null;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   228
	this.mousePosLastY = null;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   229
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   230
	//Si la distance parcourue par la souris entre le mouse down et le mouse up est inférieure ou égale au seuil.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   231
	if(this.touchUpDownDelta <= this.config.touchUpDownDeltaTreshold)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   232
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   233
		//Si on est sur un snapshot prézoomé.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   234
		if(this.isOnAPrezoomSN && this.previousZoomedSN != '' && (this.currentMode == 'MOSAIC' || this.currentMode == 'FILTER') && !this.isPrezooming)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   235
		{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   236
			this.zoom();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   237
		}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   238
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   239
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   240
	//On réinitialise le delta, on quitte la recherche par courbes.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   241
	this.touchUpDownDelta = 0;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   242
	this.isSearchByCurvesOn = false;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   243
	this.leaveSearch();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   244
	
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   245
	//Si on est en mode de filtrage et qu'on a une gesture de filtrage trouvée.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   246
	if(this.currentMode == 'FILTER' && this.filterSearchedType != '')
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   247
	{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   248
		//On notifie.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   249
		this.removeNotifications();
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   250
		this.filterGesture(this.filterSearchedType, 'valid');
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   251
	}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   252
	this.isTouchMove = false;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   253
}
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   254
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   255
/*
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   256
 * Donne éventuellement un snapshot d'après les coordonnées passées en paramètres.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   257
 * Renvoie null sinon.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   258
*/
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   259
Mosaic.prototype.positionToSN = function(x, y)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   260
{
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   261
    if(this.helpDisplayed)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   262
    {
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   263
        return;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   264
    }
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   265
    
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   266
    //Taille de la marge des snapshots.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   267
    var m = parseInt($('.snapshotDivs').css('margin-left'));
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   268
    
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   269
    //Dimensions d'un snapshot de la mosaïque.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   270
    var W = $('.snapshotDivs').width() + m * 2, H = $('.snapshotDivs').height() + m * 2;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   271
    
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   272
    //Position supposée du snapshot dans la mosaïque.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   273
    //Au départ on ne sélectionne rien.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   274
    var i = -1, j = -1;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   275
    
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   276
    //Espace de centrage vertical de la mosaïque.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   277
    var top_margin = parseInt(this.MPTop_margin);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   278
    //Dimensions de la mosaïque en nombre de snapshots.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   279
    var mosW = this.config.imagesByLine, mosH = this.config.imagesToShow / mosW;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   280
    
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   281
    //Si le pointeur se trouve au niveau de la mosaïque.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   282
    if(x < W * mosW && y >= top_margin && y < H * mosH + top_margin)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   283
    {
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   284
        //Si le pointeur est sur une des bordures.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   285
        var xb = x % W;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   286
        var yb = y - top_margin;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   287
        yb %= H;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   288
        
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   289
        if(xb < m || xb > W - m || yb < m || yb > H - m)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   290
        {
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   291
            //On renvoie null.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   292
            return null;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   293
        }
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   294
        //Sinon il est forcément sur un des snapshots.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   295
        else
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   296
        {
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   297
            i = Math.floor(x / W);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   298
            j = Math.floor((y - top_margin) / H);
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   299
        }
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   300
        
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   301
        //On passe des coordonnées 2D en 1D.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   302
        var snapshot = $('#snapshotDiv-' + (j * mosW + i));
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   303
        
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   304
        //Si le snapshot a été filtré, on renvoie null si on se trouve dans la mosaïque.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   305
        if(this.isMosaicFiltered && (this.currentMode == "MOSAIC" || this.currentMode == "FILTER") && snapshot.css('opacity') == 0)
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   306
        {
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   307
            return null;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   308
        }
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   309
        
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   310
        //On renvoie le snapshot.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   311
        return snapshot;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   312
    }
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   313
    
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   314
    //Si on est arrivé là, c'est que le pointeur n'est pas dans la mosaïque.
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   315
    return null;
205409da0f32 Front IDILL:
bastiena
parents:
diff changeset
   316
}