Subversion Repositories eFlore/Applications.cel

Rev

Rev 1108 | Rev 1130 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1108 Rev 1123
Line 10... Line 10...
10
	if (evenement.stopPropagation) {
10
	if (evenement.stopPropagation) {
11
		evenement.stopPropagation();
11
		evenement.stopPropagation();
12
	}
12
	}
13
	return false;
13
	return false;
14
}
14
}
-
 
15
 
15
// TODO : voir si cette fonction est bien utile. Résoud le pb d'un warning sous chrome.
16
// TODO : voir si cette fonction est bien utile. Résoud le pb d'un warning sous chrome.
16
(function(){
17
(function(){
17
    // remove layerX and layerY
18
    // remove layerX and layerY
18
    var all = $.event.props,
19
    var all = $.event.props,
19
        len = all.length,
20
        len = all.length,
Line 26... Line 27...
26
}());
27
}());
Line 27... Line 28...
27
 
28
 
28
//+----------------------------------------------------------------------------------------------------------+
29
//+----------------------------------------------------------------------------------------------------------+
29
//UPLOAD PHOTO : Traitement de l'image 
30
//UPLOAD PHOTO : Traitement de l'image 
30
$(document).ready(function() {	
31
$(document).ready(function() {	
31
 
32
	
32
	$("#effacer-miniature").click(function () {
33
	$("#effacer-miniature").click(function () {
33
		supprimerMiniature();
34
		supprimerMiniature();
Line 34... Line 35...
34
	});
35
	});
35
	
36
	
-
 
37
	if (window.File && window.FileReader) {
-
 
38
		if (DEBUG) {
36
	$("#fichier").bind('change', function (e) {
39
			console.log("L'API File est supporté.");
37
		arreter(e);
40
		}
38
		$("#form-upload").ajaxSubmit(options);
41
		$('#fichier').bind('change', function(e) {
39
		return false;
42
			afficherMiniatureHtml5(e);
40
	});
43
		});	
41
	
44
	} else {
42
	//prepare the form when the DOM is ready 
45
		$("#fichier").bind('change', function (e) {
43
	//create service object(proxy) using SMD (generated by the json result)
46
			arreter(e);
44
	var options = { 
47
			var options = { 
45
		success: afficherMiniature, // post-submit callback 
48
				success: afficherMiniature, // post-submit callback 
-
 
49
				dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type) 
-
 
50
				resetForm: true // reset the form after successful submit 
-
 
51
			};
-
 
52
			$("#form-upload").ajaxSubmit(options);
46
		dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type) 
53
			return false;
47
		resetForm: true // reset the form after successful submit 
54
		});
Line -... Line 55...
-
 
55
	}	
-
 
56
});
-
 
57
 
-
 
58
function afficherMiniatureHtml5(evt) {
-
 
59
	supprimerMiniature();
-
 
60
	var selectedfiles = evt.target.files; // FileList object
-
 
61
	var f = selectedfiles[0];// Nous récupérons seulement le premier fichier.
-
 
62
	// Only process image files.
-
 
63
	if (f.type.match('image.*') == false) {
-
 
64
		var message = "Seule les images JPEG sont supportées.";
-
 
65
		$("#miniature-msg").append(message);
-
 
66
	} else {
-
 
67
		var reader = new FileReader();
-
 
68
		// Lit le fichier image commune url de données
-
 
69
		reader.readAsDataURL(f);
-
 
70
		var imgNom = f.name;
-
 
71
	
-
 
72
		// Closure pour capturer les infos du fichier
-
 
73
		reader.onload = (function(theFile) {
-
 
74
			return function(e) {
-
 
75
				// Rendre la miniature
-
 
76
				var imageBase64 = e.target.result;
-
 
77
				$("#miniature").append('<img id="miniature-img" class="miniature b64" src="'+imageBase64+'" alt="'+imgNom+'"/>');	   
-
 
78
			};
-
 
79
		})(f);
-
 
80
	}
48
	};
81
	$("#effacer-miniature").show();
-
 
82
}
-
 
83
 
49
});
84
function afficherMiniature(reponse) { 
-
 
85
	supprimerMiniature();
-
 
86
	if (DEBUG) {
50
 
87
		var debogage = $("debogage", reponse).text();
-
 
88
		console.log("Débogage upload : "+debogage);
-
 
89
	}
-
 
90
	var message = $("message", reponse).text();
51
function afficherMiniature(reponse) { 
91
	if (message != '') {
52
	// 'responseXML' is the XML document returned by the server; we use 
92
		$("#miniature-msg").append(message);
53
	// jQuery to extract the content of the message node from the XML doc 
-
 
54
	var miniatureUrl = $("miniature-url", reponse).text();
93
	} else {
-
 
94
		var miniatureUrl = $("miniature-url", reponse).text();
55
	var imgNom = $("image-nom", reponse).text();
95
		var imgNom = $("image-nom", reponse).text();
56
	$("#miniature").empty();
96
		$("#miniature").append('<img id="miniature-img" class="miniature" alt="'+imgNom+'" src="'+miniatureUrl+'"/>');
Line 57... Line 97...
57
	$("#miniature").append('<img id="miniature-img" class="miniature" alt="'+imgNom+'" src="'+miniatureUrl+'"/>');
97
	}
58
	$("#effacer-miniature").show();		
98
	$("#effacer-miniature").show();		
-
 
99
}
59
}
100
 
60
 
101
function supprimerMiniature() {
Line 61... Line 102...
61
function supprimerMiniature() {
102
	$("#miniature").empty();
62
	$("#miniature").empty();
103
	$("#miniature-msg").empty();
Line 345... Line 386...
345
			obsNumero = obsNumero + 1;
386
			obsNumero = obsNumero + 1;
346
			$("#liste-obs tbody").append(
387
			$("#liste-obs tbody").append(
347
					'<tr id="obs'+obsNumero+'" class="obs">'+
388
					'<tr id="obs'+obsNumero+'" class="obs">'+
348
					'<td>'+obsNumero+'</td>'+
389
					'<td>'+obsNumero+'</td>'+
349
					'<td>'+$("#date").val()+'</td>'+
390
					'<td>'+$("#date").val()+'</td>'+
350
					'<td>'+$("#adresse").val()+'</td>'+
391
					'<td>'+$("#rue").val()+'</td>'+
351
					'<td>'+$("#taxon option:selected").text()+'</td>'+
392
					'<td>'+$("#taxon option:selected").text()+'</td>'+
352
					'<td>'+$('input[name=milieu]:checked').val()+'</td>'+
393
					'<td>'+$('input[name=milieu]:checked').val()+'</td>'+
353
					'<td>'+$("#latitude").val()+' / '+$("#longitude").val()+'</td>'+
394
					'<td>'+$("#latitude").val()+' / '+$("#longitude").val()+'</td>'+
354
					//Ajout du champ photo
395
					//Ajout du champ photo
355
					'<td class="obs-miniature">'+ajouterImgMiniature()+'</td>'+
396
					'<td class="obs-miniature">'+ajouterImgMiniatureAuTransfert()+'</td>'+
356
					'<td>'+$("#notes").val()+'</td>'+
397
					'<td>'+$("#notes").val()+'</td>'+
357
					'<td><button class="supprimer-obs" value="'+obsNumero+'" title="Supprimer l\'observation '+obsNumero+'">'+
398
					'<td><button class="supprimer-obs" value="'+obsNumero+'" title="Supprimer l\'observation '+obsNumero+'">'+
358
					'<img src="'+SUPPRIMER_ICONE_URL+'"/></button></td>'+
399
					'<img src="'+SUPPRIMER_ICONE_URL+'"/></button></td>'+
359
				'</tr>');
400
				'</tr>');
360
			//rassemble les obs dans #liste-obs
401
			//rassemble les obs dans #liste-obs
Line 376... Line 417...
376
				'lieu_dit' : $("#rue").val(),
417
				'lieu_dit' : $("#rue").val(),
377
				'station' : $("#rue_num_debut").val()+'-'+$("#rue_num_fin").val()+'-'+$("#rue_cote").val(),
418
				'station' : $("#rue_num_debut").val()+'-'+$("#rue_num_fin").val()+'-'+$("#rue_cote").val(),
378
				'notes' : $("#notes").val(),
419
				'notes' : $("#notes").val(),
379
				//Ajout des champs images
420
				//Ajout des champs images
380
				'image_nom' : $("#miniature-img").attr('alt'),
421
				'image_nom' : $("#miniature-img").attr('alt'),
381
				'image_b64' : ''// TODO : ajoute le support HTML5
422
				'image_b64' : $("#miniature-img").hasClass('b64') ? $("#miniature-img").attr('src') : ''
382
			});
423
			});
-
 
424
			console.log("B64 : "+$("#miniature-img").hasClass('b64') ? $("#miniature-img").attr('src') : '');
383
		}
425
		}
384
	});
426
	});
Line 385... Line 427...
385
	
427
	
386
	$(".supprimer-obs").live('click', function() {
428
	$(".supprimer-obs").live('click', function() {
Line 428... Line 470...
428
				success : function(data, textStatus, jqXHR) {
470
				success : function(data, textStatus, jqXHR) {
429
					$("#dialogue-obs-transaction").append('<p class="msg">Vos observations ont bien été transmises.</p>');
471
					$("#dialogue-obs-transaction").append('<p class="msg">Vos observations ont bien été transmises.</p>');
430
					supprimerMiniature();
472
					supprimerMiniature();
431
				},
473
				},
432
				statusCode : {
474
				statusCode : {
433
				    500 : function(jqXHR, textStatus, errorThrown) {
475
					500 : function(jqXHR, textStatus, errorThrown) {
-
 
476
						$("#chargement").hide();
434
						erreurMsg += "Erreur 500 :\ntype : "+textStatus+' '+errorThrown+"\n";
477
						erreurMsg += "Erreur 500 :\ntype : "+textStatus+' '+errorThrown+"\n";
435
						reponse = jQuery.parseJSON(jqXHR.responseText);
-
 
436
						if (reponse != null) {
-
 
437
							$.each(reponse, function (cle, valeur) {
-
 
438
								erreurMsg += valeur + "\n";
-
 
439
							});
-
 
440
						}
-
 
441
						if (DEBUG) {
478
						if (DEBUG) {
442
							$("#dialogue-obs-transaction").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');
479
							$("#dialogue-obs-transaction").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');
443
						}
480
						}
444
				    }
481
				    }
445
				},
482
				},
446
				error : function(jqXHR, textStatus, errorThrown) {
483
				error : function(jqXHR, textStatus, errorThrown) {
447
					erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
484
					erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
-
 
485
					try {
448
					reponse = jQuery.parseJSON(jqXHR.responseText);
486
						reponse = jQuery.parseJSON(jqXHR.responseText);
449
					if (reponse != null) {
487
						if (reponse != null) {
450
						$.each(reponse, function (cle, valeur) {
488
							$.each(reponse, function (cle, valeur) {
451
							erreurMsg += valeur + "\n";
489
								erreurMsg += valeur + "\n";
452
						});
490
							});
-
 
491
						}
-
 
492
					} catch(e) {
-
 
493
						erreurMsg += "L'erreur n'était pas en JSON.";
453
					}
494
					}
Line 454... Line 495...
454
					
495
					
455
					if (DEBUG) {
496
					if (DEBUG) {
456
						$("#dialogue-obs-transaction").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');
497
						$("#dialogue-obs-transaction").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');
457
					}
498
					}
458
				},
499
				},
-
 
500
				complete : function(jqXHR, textStatus) {
459
				complete : function(jqXHR, textStatus) {
501
					$("#chargement").hide();
460
					var debugMsg = '';
502
					var debugMsg = '';
461
					if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
503
					if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
462
						debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
504
						debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
463
						if (debugInfos != null) {
505
						if (debugInfos != null) {
Line 477... Line 519...
477
								'</p>');
519
								'</p>');
478
					}
520
					}
479
					if (DEBUG) {
521
					if (DEBUG) {
480
						$("#dialogue-obs-transaction").append('<pre class="msg-debug">Débogage : '+debugMsg+'</pre>');
522
						$("#dialogue-obs-transaction").append('<pre class="msg-debug">Débogage : '+debugMsg+'</pre>');
481
					}
523
					}
482
					$("#chargement").hide();
-
 
-
 
524
					
483
					$("#dialogue-obs-transaction").dialog();
525
					$("#dialogue-obs-transaction").dialog();
484
					$("#liste-obs").removeData();
526
					$("#liste-obs").removeData();
485
					$('.obs').remove();
527
					$('.obs').remove();
486
					obsNumero = 0;
528
					obsNumero = 0;
487
				}
529
				}
Line 489... Line 531...
489
		}
531
		}
490
		return false;
532
		return false;
491
	});
533
	});
492
});
534
});
Line 493... Line 535...
493
 
535
 
494
function ajouterImgMiniature() {
536
function ajouterImgMiniatureAuTransfert() {
495
	var miniature = '';
537
	var miniature = '';
-
 
538
	if ($("#miniature img").length == 1) {
496
	if ($("#miniature img").length == 1) {
539
		var css = $("#miniature-img").hasClass('b64') ? 'miniature b64' : 'miniature';
497
		var src = $("#miniature-img").attr("src");
540
		var src = $("#miniature-img").attr("src");
498
		var alt = $("#miniature-img").attr("alt");
541
		var alt = $("#miniature-img").attr("alt");
499
		miniature = '<img class="miniature" alt="'+alt+'"src="'+src+'" />';
542
		miniature = '<img class="'+css+'" alt="'+alt+'"src="'+src+'" />';
500
	}
543
	}
501
	return miniature;
-
 
502
}
-
 
503
 
-
 
504
function handleFileSelect(evt) {
-
 
505
	// Check for the various File API support.
-
 
506
	if (window.File && window.FileReader && window.FileList && window.Blob) {
-
 
507
	// Great success! All the File APIs are supported.
-
 
508
		var selectedfiles = evt.target.files; // FileList object
-
 
509
		
-
 
510
		// Loop through the FileList and render image files as thumbnails.
-
 
511
		for (var i = 0, f; f = selectedfiles[i]; i++) {
-
 
512
		
-
 
513
		  // Only process image files.
-
 
514
		  if (!f.type.match('image.*')) {
-
 
515
		    continue;
-
 
516
		  }
-
 
517
		
-
 
518
		  var reader = new FileReader();
-
 
519
		
-
 
520
		  // Read in the image file as a data URL.
-
 
521
		  reader.readAsDataURL(f);
-
 
522
		  
-
 
523
		  // Closure to capture the file information.
-
 
524
		  reader.onload = (function(theFile) {
-
 
525
			 return function(e) {
-
 
526
		    	// Render thumbnail.
-
 
527
		    	document.getElementById('image').src = e.target.result;
-
 
528
		    	//document.getElementById('list').insertBefore(img, null);
-
 
529
		    };
-
 
530
		  })(f);
-
 
531
		}
-
 
532
 
-
 
533
	} 
-
 
534
	else {
-
 
535
	  alert('The File APIs are not fully supported in this browser.');
-
 
536
	}
544
	return miniature;
537
}
545
}