Subversion Repositories eFlore/Applications.cel

Rev

Rev 2857 | Rev 2861 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2850 aurel 1
/* Héritage */
2
function WidgetSaisieMessicoles()
3
{
2857 aurel 4
	this.taxons = {};
2850 aurel 5
}
2857 aurel 6
 
2850 aurel 7
WidgetSaisieMessicoles.prototype = new WidgetSaisie();
8
 
9
/* Surcharge des fonctions */
2854 mathias 10
 
2857 aurel 11
// Surcharge ajouterObs
12
WidgetSaisieMessicoles.prototype.ajouterObs = function() {
2852 mathias 13
	// Fermeture automatique des dialogue de transmission de données
14
	// @WARNING TEST
15
	$('#dialogue-obs-transaction-ko').hide();
16
	$('#dialogue-obs-transaction-ok').hide();
2850 aurel 17
 
2852 mathias 18
	// vérification : si la détermination est incertaine, obligation
19
	// de fournir au moins une image
2857 aurel 20
	var certitude = $('#identification-liste').val(),
21
		nbImages = $('#miniatures img').length,
2852 mathias 22
		imagesOK = true;
23
	if (certitude != "certaine" && nbImages == 0) {
24
		imagesOK = false;
2857 aurel 25
		$('#image-obligatoire').show();
2852 mathias 26
	} else {
2857 aurel 27
		$('#image-obligatoire').hide();
2852 mathias 28
	}
29
 
30
	if ((this.validerFormulaire() == true) && imagesOK) {
31
		this.masquerPanneau('#dialogue-form-invalide');
2857 aurel 32
		//return false;
2852 mathias 33
		// suite des opérations
34
		this.obsNbre = this.obsNbre + 1;
35
		$(".obs-nbre").text(this.obsNbre);
36
		$(".obs-nbre").triggerHandler('changement');
37
		this.afficherObs();
38
		this.stockerObsData();
39
		this.supprimerMiniatures();
40
		if(! this.especeImposee) {
41
			$("#taxon").val("");
42
			$("#taxon").data("numNomSel",undefined);
43
		}
44
		$('#barre-progression-upload').attr('aria-valuemax', this.obsNbre);
45
		$('#barre-progression-upload .sr-only').text('0/'+this.obsNbre+" observations transmises");
46
	} else {
47
		this.afficherPanneau('#dialogue-form-invalide');
48
	}
49
};
50
 
2857 aurel 51
// surcharge fonction definirReglesFormValidator()
52
WidgetSaisieMessicoles.prototype.definirReglesFormValidator = function() {
53
	// WidgetSaisie.definirReglesFormValidator();
54
	$("#form-observateur").validate({
55
		rules: {
56
			courriel : {
57
				required : true,
58
				email : true},
59
			courriel_confirmation : {
60
				required : true,
61
				equalTo: "#courriel"}
62
		}
63
	});
64
	$("#form-station").validate({
2860 mathias 65
		ignore: ':hidden:not("#latitude, #longitude")', // validation des champs cachés...
66
		errorPlacement: function(error, element) { // ...mais erreur visible
67
			error.insertBefore("#coordonnees-geo");
68
		},
69
		groups: {
70
			latLon: "latitude longitude"
71
		},
2857 aurel 72
		rules: {
73
			latitude : {
2860 mathias 74
				required: true,
75
				range: [-90, 90]
76
			},
2857 aurel 77
			longitude : {
2860 mathias 78
				required: true,
79
				range: [-180, 180]
80
			}
2857 aurel 81
		}
82
	});
83
	$("#form-obs").validate({
84
		rules: {
85
			"taxon-liste" : "required",
86
			taxon : "required",
87
			"abondance-liste" : "required",
88
			"zone-champ[]" : {
89
            	required : true,
90
            	minlength : 1
91
            }
2860 mathias 92
		},
93
		errorPlacement: function(error, element) { // pas top mais mieux que rien
94
			error.insertBefore(element.parent());
2857 aurel 95
		}
96
	});
97
	$("#form-date").validate({
98
		rules: {
99
			date : {
100
				required : true,
101
				date : date
102
			}
103
		}
104
	});
105
};
106
 
107
// surcharge fonction validerFormulaire()
108
WidgetSaisieMessicoles.prototype.validerFormulaire = function() {
109
	observateur = $("#form-observateur").valid();
110
	station = $("#form-station").valid();
111
	obs = $("#form-obs").valid();
112
	date = $("#form-date").valid();
113
	return (observateur && station && obs && date);
114
};
115
 
116
// surcharge fonction stockerObsData()
117
WidgetSaisieMessicoles.prototype.stockerObsData = function() {
118
	var lthis = this;
119
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
120
		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
121
		numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
122
	var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
123
		nomRet = nomHorsListe ? $('#taxon').data('nomRet') : this.taxons[numNomSel]['nom_ret'],
124
		numNomRet = nomHorsListe ? $('#taxon').data('numNomRet') : this.taxons[numNomSel]['num_nom_ret'],
125
		numTaxon = nomHorsListe ? $('#taxon').data('nt') : this.taxons[numNomSel]['num_taxon'],
126
		famille = nomHorsListe ? $('#taxon').data('famille') : this.taxons[numNomSel]['famille'],
127
		referentiel = (numNomSel == undefined) ? '' : this.nomSciReferentiel,
128
		notes = (nomSpecial ? this.taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val(),
129
		zoneChamp = [],
130
		abondance = $('#abondance-liste option:selected').val(),
131
		typeCulture = $('input[name=type-culture]:checked').val(),
132
		certitude = $('input[name=certitude]:checked').val(),
133
		certitude = (certitude == undefined) ? '' : certitude;
134
 
135
 
136
	$('#liste-obs').data('obsId'+this.obsNbre, {
137
		'date': $('#date').val(),
138
		'notes': notes,
139
 
140
		'station': $('#station').val(),
141
		'latitude': $('#latitude').val(),
142
		'longitude': $('#longitude').val(),
143
		'commune_nom': $('#commune-nom').text(),
144
		'commune_code_insee': $('#commune-code-insee').text(),
145
 
146
		'nom_sel': nomSel,
147
		'num_nom_sel': numNomSel,
148
		'nom_ret': nomRet,
149
		'num_nom_ret': numNomRet,
150
		'num_taxon': numTaxon,
151
		'famille': famille,
152
		'referentiel': referentiel,
153
		'certitude': certitude,
154
		'milieu': milieu,
155
		'zone_champ': zoneChamp,
156
		'abondance': abondance,
157
		'type_culture': typeCulture,
158
 
159
		// Ajout des champs images
160
		//'image_nom': lthis.getNomsImgsOriginales(),
161
 
162
		// Ajout des champs étendus de l'obs
163
		//'obs_etendue': lthis.getObsChpEtendus()
164
	});
165
	if (this.debug) {
166
		console.log($('#liste-obs').data('obsId'+this.obsNbre));
167
	}
168
};
169
 
170
/**
171
 * Affiche une observation dans la liste des observations à transmettre
172
 */
173
WidgetSaisieMessicoles.prototype.afficherObs = function() {
174
 
175
	var commune = $("#commune-nom").text();
176
	commune = commune.trim() != "" ? commune : $("#carte-recherche").val();
177
 
178
	var code_insee = $('#commune-code-insee').text();
179
	code_insee = code_insee.trim() != "" ? "("+code_insee+")" : "";
180
 
181
	var taxonListe = $("#taxon-liste option:selected").data('nom-a-sauver');
182
	var taxon = $("#taxon").val();
183
	var numNomSel = $("#taxon").data("numNomSel");
184
	var latitude = $("#latitude").val();
185
	var longitude = $("#longitude").val();
186
	var date = $("#date").val();
187
	var lieudit = ($('#lieudit').val() != "" ? $('#lieudit').val() : "pas de lieu-dit saisi");
188
	var station = ($('#station').val() != "" ? $('#station').val() : "pas de station saisie");
189
	var milieu = ($('#milieu').val() != "" ? $('#milieu').val() : "pas de milieu saisi");
190
	var culture = ($('#culture-autres-radio').is(':checked') ? $('#culture-autres-input').val() : $('input[name=type-culture]:checked').data('titre'));
191
	var identification = $('#identification-liste option:selected').data('titre');
192
	var abondance = $('#abondance-liste option:selected').data('titre');
193
	var zoneChamp = [];
194
	// récupération des cases à cocher multiples dans un tableau pour l'abondance
195
	$('input[name="zone-champ[]"]:checked').each(function() {
196
		zoneChamp.push(' '+$(this).data('titre'));
197
	});
198
	var notes = $("#notes").val();
199
 
200
	if (this.debug) {
201
		console.log(commune+'  -  '+code_insee);
202
	}
2860 mathias 203
 
2857 aurel 204
	// affichage des données de l'observation à transmettre
205
	$("#liste-obs").prepend(
206
		'<div id="obs'+this.obsNbre+'" class="row-fluid obs obs'+this.obsNbre+'">'+
207
			'<div class="span12">'+
208
				'<div class="well">'+
209
					'<div class="obs-action pull-right has-tooltip" data-placement="bottom" '+
210
						'title="Supprimer cette observation de la liste à transmettre">'+
211
						'<button class="btn btn-danger supprimer-obs" value="'+this.obsNbre+'" title="'+this.obsNbre+'">'+
212
							'<i class="icon-trash icon-white"></i>'+
213
						'</button>'+
214
					'</div> '+
215
					'<div class="row-fluid">'+
216
						'<div class="thumbnail span2">'+
217
						this.ajouterImgMiniatureAuTransfert()+
218
						'</div>'+
219
						'<div class="span9">'+
220
							'<ul class="unstyled">'+
221
								'<li>'+
222
									'<span class="nom-sci">'+taxonListe+taxon+'</span> '+
223
									this.ajouterNumNomSel()+'<span class="referentiel-obs">'+
224
									(numNomSel == undefined ? '' : '['+ this.nomSciReferentiel +']')+'</span>'+
225
									' observé à <span class="gras">'+commune+' '+code_insee+'</span> ['+latitude+' / '+longitude+']'+' le <span class="gras">'+' '+date+'</span>'+
226
								'</li>'+
227
								'<li>'+
228
									'<div class="row-fluid">'+
229
										'<span class="span4">Lieu-dit : <span class="gras">'+lieudit+'</span></span>'+
230
										'<span class="span4">Station : <span class="gras">'+station+'</span></span>'+
231
										'<span class="span4">Milieu : <span class="gras">'+milieu+'</span></span>'+
232
									'</div>'+
233
								'</li>'+
234
								'<li>'+
235
									'<div class="row-fluid">'+
236
										'<span class="span4">Culture de type <span class="gras">'+culture+'</span></span>'+
237
										'<span class="span4">Identification <span class="gras">'+identification+'</span></span>'+
238
										'<span class="span4">Abondance de <span class="gras">'+abondance+'</span></span>'+
239
									'</div>'+
240
								'</li>'+
241
								'<li>'+
242
									'Espèce située en <span class="gras">'+zoneChamp+'</span> du champ'+
243
								'</li>'+
244
								'<li>'+
245
									'Notes : <span class="discretion">'+notes+'</span>'+
246
								'</li>'+
247
							'</ul>'+
248
						'</div>'+
249
					'</div>'+
250
				'</div>'+
251
			'</div>'+
252
		'</div>');
253
	$('#zone-liste-obs').removeClass("hidden").show();
254
};
255
 
256
 
257
 
258
 
2851 mathias 259
/* jQuery en vrac */
260
$(document).ready(function() {
261
	// super popover qui va chercher son contenu dans un div à côté (pour les
262
	// boutons d'aide des types de champs, etc.)
263
	$('[data-toggle="popover"]').popover({
264
        html : true,
265
        content: function() {
266
			var parentFor = $(this).parent().attr("for");
267
			var popoverHtmlContentDiv = $('.popover-html-content[data-for="' + parentFor + '"]');
268
			return popoverHtmlContentDiv.html();
269
        }
270
    });
2860 mathias 271
 
2857 aurel 272
    // Activation de la saisie si on clique sur 'Autres' (type de champ)
273
    $('.culture').change(function() {
274
    	var input = $('#culture-autres-input');
2860 mathias 275
   		($('#culture-autres-radio').is(':checked')) ? input.show() && input.focus() : input.hide();
2857 aurel 276
    });
2860 mathias 277
 
278
    // Affichage de l'espèce liée au référentiel sélectionné lors de la sélection 'Autres' (espèce)
2857 aurel 279
    $('#taxon-liste').change(function() {
280
    	var option = $('#taxon-liste').val();
281
    	var taxonCompletion = $('#taxon-input-groupe');
282
    	if (option == '?') {
283
    		taxonCompletion.show();
284
    		$('#taxon').focus();
2856 aurel 285
    	}
286
    	else {
2857 aurel 287
    		taxonCompletion.hide();
2856 aurel 288
    	}
289
    });
2860 mathias 290
 
2857 aurel 291
    // On masque l'option par défaut pour l'abondance puisque le choix est obligatoire
292
    $('#abondance-liste').click(masquerTitreListe('abondance'));
293
    function masquerTitreListe(element) {
294
		$('#' + element + '-liste .a-masquer').hide();
295
	}
2850 aurel 296
});